Les conditions vous permettent d’afficher de manière sélective tout élément oxygène en fonction d’une condition ou d’un ensemble de conditions, par exemple si un utilisateur est connecté ou si un utilisateur a un certain rôle ou une certaine capacité.

Lorsque les conditions d’un élément sont évaluées à  true, l’élément est affiché. Si les conditions sont évaluées à  false, l’élément est masqué. Par défaut, toutes les conditions d’un élément doivent être évaluées à  true pour qu’il soit affiché, car le type de condition par défaut est AND. Si vous modifiez le type de condition sur OR, une seule des conditions doit être évaluée à vrai pour afficher l’élément.

Pour définir une condition pour un élément, sélectionnez l’élément et cliquez sur l’icône de condition en haut du volet Propriétés.

Vous aurez ensuite le menu des conditions.

Définir les conditions

Ce bouton lance le Modal Conditions, dans lequel vous pouvez définir les conditions pour cet élément.

Type de condition

Choisissez si la pile de conditions est évaluée comme ET (toutes les conditions doivent être vraies) ou OU (une condition doit être vraie).

Comportement de l’éditeur

Choisissez la visibilité de l’élément dans l’aperçu du générateur. Choisissez  Toujours afficher pour rendre l’élément toujours visible dans le générateur. Choisissez  Toujours masquer pour voir à quoi ressemble la conception lorsque les conditions de l’élément sont évaluées à false. Pour prévisualiser la visibilité de l’élément en fonction de l’évaluation réelle de ses conditions, choisissez  Afficher / Masquer en fonction des conditions.

CONDITIONS MODALES

Cliquez sur  Définir les conditions pour lancer le module Conditions, dans lequel vous pouvez désigner les conditions utilisées pour l’élément. Pour commencer, cliquez sur le bouton  Ajouter votre première condition. Maintenant, trois champs vous seront présentés : Condition, Opérateur et Valeur.

Utilisez le menu déroulant le plus à gauche pour choisir d’abord votre condition. Oxygen comprend déjà un certain nombre de conditions intégrées, mais les conditions enregistrées via l’API Conditions seront également répertoriées ici.

Une fois que vous avez choisi une condition, choisissez un opérateur dans le champ déroulant du milieu. Les opérateurs sont utilisés pour évaluer une valeur (par exemple, l’ID de la publication actuelle) par rapport à la valeur que vous choisissez. Il existe un certain nombre d’opérateurs disponibles en fonction de la condition choisie. Certains opérateurs, tels que  contient ou  ne contient pas,  sont des abstractions de fonctions de comparaison de chaînes et fonctionnent comme leur nom l’indique. Certaines conditions ne nécessitent pas forcément d’opérateur,dans ces cas là, le seul opérateur disponible sera deux tirets (-).

Enfin, choisissez une valeur dans le champ de droite. Ce champ peut être une liste déroulante, un champ de saisie ou les deux, selon la condition choisie. Lors de la saisie d’une valeur personnalisée, tenez compte du type de données que vous comparez. Par exemple, vous ne devez pas utiliser de chaîne ou de texte comme valeur pour une condition d’ID de publication. En effet, ce dernier compare votre valeur à un nombre.

Une fois qu’une condition a été définie sur un élément, vous pouvez voir l’icône d’indicateur de condition à côté du nom de cet élément dans le volet Structure.

Cette icône vous aidera à localiser les éléments qui peuvent être masqués par une condition dans l’aperçu du générateur.

API CONDITIONS

L’API Conditions vous permet d’enregistrer vos propres conditions d’utilisation dans Oxygen. Cela peut être fait à partir d’un plugin personnalisé ou via le plugin Code Snippets.

Pour commencer, il est important de vérifier d’abord si la fonction Oxygen_vsb_register_condition existe avant de l’utiliser.

if( function_exists('oxygen_vsb_register_condition') ) { }

Cela évite les erreurs qui résulteraient du fait qu’Oxygen n’est pas actif et que notre code essaie toujours d’appeler la fonction Oxygen_vsb_register_condition_function.

Ensuite, nous devons utiliser la fonction Oxygen_vsb_register_condition () pour enregistrer notre condition. La fonction Oxygen_vsb_register_condition accepte les arguments requis suivants :

Nom de la condition

(string)  Le nom de la condition tel qu’il apparaîtra dans la liste Conditions dans Oxygène.

Valeurs

(array)  Le tableau de valeurs prédéfinies parmi lesquelles l’utilisateur peut choisir. Utilisez la  clé d’ options pour répertorier les valeurs par défaut. Définissez la  valeur de la clé personnalisée  sur  true  pour permettre aux utilisateurs de saisir des valeurs personnalisées. Exemple: array (‘options’ => array (‘option 1’, ‘option 2’, ‘true’, ‘false’), ‘custom’ => true).

Les opérateurs

(array)  Tableau d’opérateurs pouvant être utilisés dans la condition. Exemple: array (‘==’, ‘! =’).

Fonction de rappel

(string)  Nom de la fonction qui sera utilisée pour gérer la condition.

Catégorie de condition

(string)  Nom de la catégorie sous laquelle la condition apparaîtra dans la liste déroulante Conditions.

Dans cet exemple, nous enregistrerons une condition qui vérifie l’ID de la publication actuelle.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'condition_post_id_callback', 'Post');

}

Puisque nous voulons que l’utilisateur saisisse sa propre valeur personnalisée, nous avons laissé le tableau Options vide et défini Custom sur true.

Ensuite, nous devons simplement créer la fonction de rappel pour évaluer la condition et renvoyer vrai ou faux en fonction de l’évaluation.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'ex_condition_post_id_callback', 'Post');

function ex_condition_post_id_callback($value, $operator) {

$current_post_id = get_the_ID();
$value = intval($value);

if ($operator == "==") {
if ($current_post_id == $value) {
return true;
} else {
return false;
}
} else if ($operator == "!=") {
if ($current_post_id != $value) {
return true;
} else {
return false;
}
} else if ($operator == ">=") {
if ($current_post_id >= $value) {
return true;
} else {
return false;
}
} else if ($operator == "<=") {
if ($current_post_id <= $value) {
return true;
} else {
return false;
}
} else if ($operator == ">") {
if ($current_post_id > $value) {
return true;
} else {
return false;
}
} else if ($operator == "<") {
if ($current_post_id < $value) {
return true;
} else {
return false;
}

}

}

}

Notez que la fonction accepte deux arguments: $value et $operator. Les valeurs possibles pour ceux-ci sont déterminées par les valeurs définies dans Oxygen_vsb_register_condition et sont choisies par l’utilisateur. Ensuite, les arguments sont passés à la fonction et utilisés pour évaluer la condition.

Tout d’abord, nous définissons une variable sur la valeur à laquelle nous voulons comparer. Dans ce cas, nous avons besoin de connaître l’ID de publication de la publication actuelle, nous définissons donc $current_post_id sur get_the_ID (). Ensuite, nous nous assurons que la valeur transmise par l’utilisateur est un entier en définissant $value sur intval ($value).

Enfin, nous mettons en place une instruction if qui vérifie l’opérateur choisi par l’utilisateur et évalue $current_post_id par rapport à $value pour déterminer le résultat. Notez que l’instruction if  doit prendre en charge tous les opérateurs possibles qui ont été déclarés dans Oxygen_vsb_register_condition_call. Nous devons retourner true si la condition est évaluée comme vraie (.eg $current_post_id == $value, si $operator est ==), et retourner false si la condition n’est pas vraie. Lorsque true est retourné par la fonction de rappel, l’élément utilisant cette condition sera visible. Si la fonction de rappel renvoie false, l’élément sera masqué.

Maintenant que votre condition a été enregistrée, elle apparaîtra dans le menu déroulant des conditions pour n’importe quel élément de votre site.

Fonctions d’assistance

Pour faciliter la création des conditions d’oxygène, nous avons également inclus quelques fonctions et variables d’aide.

Dans l’exemple ci-dessus, nous pouvons remplacer l’ instruction if  entière  en renvoyant la fonction d’assistance eval_int () à partir de l’objet global $ OxygenConditions.

Si nous évaluions une chaîne, nous pourrions utiliser la fonction $ OxygenConditions-> eval_string (). Pour utiliser l’une ou l’autre de ces fonctions, renvoyez simplement  la fonction après avoir déclaré les variables de condition et transmettez la valeur à laquelle nous comparons ($ current_post_id), la valeur choisie par l’utilisateur ($ value) et $ operator.

De plus, lors de l’enregistrement des conditions, nous pouvons utiliser la variable globale $ oxy_condition_operators pour insérer rapidement des ensembles communs d’opérateurs à utiliser dans notre condition.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'ex_condition_post_id_callback', 'Post');

function ex_condition_post_id_callback($value, $operator) {

$current_post_id = get_the_ID();
$value = intval($value);

global $OxygenConditions;

return $OxygenConditions->eval_int($current_post_id, $value, $operator);

}

}

Tout d’abord, nous devons rendre disponible la variable $oxy_condition_operators avec la ligne global $oxy_condition_operators. Ensuite, nous remplaçons notre argument d’opérateurs dans oxygène_vsb_register_condition () par cette variable, et nous ciblons l’ensemble d’opérateurs du tableau que nous voulons utiliser. Il existe trois ensembles : int, string et simple.

$oxy_condition_operators [‘int’]  = array(‘==’, ‘! =’, ‘> =’, ‘<=’, ‘>’, ‘<‘)

$oxy_condition_operators [‘string’]  = array (‘==’, ‘! =’, ‘contient’, ‘ne contient pas’)

$oxy_condition_operators [‘simple’] = array(‘==’, ‘! =’)