Fonctions if
Vous pouvez inclure une logique conditionnelle dans vos modules et modèles en utilisant les fonctions if et unless de HubL. Les fonctions if contiennent souvent des opérateurs pris en charge par HubL et peuvent être utilisées pour exécuter des tests d'expression.
Remarque : Si vous utilisez des jetons de personnalisation dans une fonction conditionnelle de votre module d'e-mail, vous devez activer les e-mails programmables pour ce module.
Les informations transmises via l'API d'e-mails transactionnels ne fonctionneront pas dans les fonctions if
, car les modèles sont compilés avant que les informations ne soient renseignées.
HubL utilise des fonctions if pour définir la logique d'un modèle. La syntaxe des fonctions if de HubL est très similaire à celle de la logique conditionnelle dans Python. Les fonctions if
sont encadrées par des délimiteurs de fonction, commençant par une fonction if
d'ouverture et se terminant par une fonction endif
.
L'exemple ci-dessous fournit la syntaxe de base d'une fonction if, où la condition est remplacée par la règle booléenne que vous allez évaluer comme étant vraie ou fausse.
Maintenant que vous avez vu la syntaxe de base, penchons-nous sur quelques exemples concrets de fonctions if de base. Les exemples suivants présentent des fonctions if qui déterminent si un module HubL portant le nom my_module
et si une variable nommée my_module
sont présents ou non dans un modèle. Notez que sans aucun opérateur, la fonction if détermine si le module est défini ou non dans le contexte du modèle.
Notez que lors de l'évaluation du module HubL, le nom du module est laissé entre guillemets dans la fonction if
et que lors du test de la variable, aucun guillemet n'est utilisé autour du nom de la variable. Dans les deux exemples ci-dessus, le module et la variable existent dans le modèle, de sorte que les fonctions sont évaluées pour imprimer le balisage. Notez que ces exemples testent uniquement si le module et la variable sont définis, et non s'ils ont une valeur ou non.
Examinons maintenant une fonction if
qui évalue si un module a une valeur, au lieu d'évaluer s'il existe dans le modèle. Pour ce faire, nous devons utiliser le paramètre export_to_template_context. Dans l'exemple ci-dessous, si l'élément de texte a une valeur dans l'éditeur de contenu, le balisage s'imprimera. Si le champ de texte du module était vide, aucun balisage ne serait restitué. Si vous travaillez dans des modules personnalisés, il existe une syntaxe simplifiée de widget.widget_name
décrite dans l'exemple ici.
Les fonctions if
peuvent être restituées de manière plus sophistiquée avec des fonctions conditionnelles supplémentaires ou avec une règle qui s'exécute lorsque la ou les conditions sont fausses. Les fonctions elif
vous permettent d'ajouter des conditions supplémentaires à votre logique, qui seront évaluées après la condition précédente. Les fonctions else
définissent une règle qui s'exécute lorsque toutes les autres conditions sont fausses. Vous pouvez avoir un nombre illimité de fonctions elif
dans une seule fonction if, mais une seule fonction else
.
Voici l'exemple de syntaxe de base d'une fonction if qui utilise l'opérateur<= pour vérifier la valeur d'une variable. Dans cet exemple, le modèle imprime : « Le nombre de la variable nommée est inférieur ou égal à 6. »
Voici un autre exemple qui utilise un module de choix pour rendre différents titres pour une page de carrières, en fonction du département choisi par l'utilisateur. L'exemple utilise l'opérateur ==, pour vérifier certaines valeurs prédéfinies dans le module de choix.
Les fonctions unless
sont des conditionnelles comme les fonctions if
, mais elles fonctionnent selon la logique inverse. Elles restitueront et compileront le code entre les balises d'ouverture et de fermeture, sauf si la condition booléenne unique est vraie. Les fonctions commencent par unless
et se terminent par endunless
. Les fonctions unless
prennent en charge les fonctions else
, mais pas les fonctions elif
.
Voici un exemple qui imprime un en-tête En construction, sauf si le champ de texte enrichi a une valeur. Si le champ de texte enrichi a du contenu, celui-ci s'affichera.
ifchanged
. Ces fonctions peuvent être utilisées pour ne rendre le balisage que lorsqu'une variable a été modifiée depuis une invocation antérieure de cette balise.if
en ligne. Celles-ci peuvent être utilisées pour écrire une logique conditionnelle de manière concise avec des opérateurs et des tests d'expression.Merci d'avoir partagé votre avis.