if-Anweisungen
Sie können bedingte Logik in Ihre Module und Vorlagen aufnehmen, indem Sie if-Anweisungen und unless-Anweisungen von HubL verwenden. if-Anweisungen enthalten oft von HubL unterstützte Operatoren und können zur Ausführung von Ausdruckstests verwendet werden.
Bitte beachten: Wenn Sie Personalisierungstoken innerhalb einer bedingten Anweisung Ihres E-Mail-Moduls verwenden, müssen Sie programmierbare E-Mails für das Modul aktivieren.
Informationen, die über die API für Transaktions-E-Mails übermittelt werden, funktionieren nicht innerhalb von if
-Anweisungen, da die Vorlagen kompiliert werden, bevor die Informationen ausgefüllt werden.
HubL verwendet if-Anweisungen, um die Logik einer Vorlage zu definieren. Die Syntax von HubL if-Anweisungen ist der bedingten Logik in Python sehr ähnlich. if
-Anweisungen sind in Anweisungstrennzeichen eingeschlossen, beginnend mit einer öffnenden if
-Anweisung und mit einer endif
-Anweisung am Ende.
Das folgende Beispiel zeigt die grundlegende Syntax einer if-Anweisung, wobei „Bedingung“ durch die boolesche Regel ersetzt wird, die Sie als wahr oder falsch auswerten wollen.
Nachdem Sie nun die grundlegende Syntax kennengelernt haben, wollen wir uns nun ein paar konkrete Beispiele für einfache if-Anweisungen ansehen. Die folgenden Beispiele zeigen if-Anweisungen, die prüfen, ob ein HubL-Modul mit dem Namen my_module
und eine Variable mit dem Namen my_module
in einer Vorlage vorhanden sind oder nicht. Beachten Sie, dass ohne jegliche Operatoren die if-Anweisung auswertet, ob das Modul im Kontext der Vorlage definiert ist oder nicht.
Beachten Sie, dass bei der Auswertung des HubL-Moduls der Modulname innerhalb der if
-Anweisung in Anführungszeichen gesetzt wird und beim Testen der Variablen keine Anführungszeichen um den Variablennamen herum verwendet werden. In beiden obigen Beispielen sind das Modul und die Variable in der Vorlage vorhanden, sodass die Anweisungen so ausgewertet werden, dass das Markup gedruckt wird. Bitte beachten Sie, dass in diesen Beispielen nur getestet wird, ob das Modul und die Variable definiert sind, und nicht, ob sie einen Wert haben oder nicht.
Betrachten wir nun eine if-Anweisung
, die auswertet, ob ein Modul einen Wert hat, anstatt auszuwerten, ob es in der Vorlage vorhanden ist. Hierfür müssen wir den Parameter export_to_template_context verwenden. Wenn im folgenden Beispiel der Textbaustein im Content-Editor einen Wert erhält, wird das Markup gedruckt. Wäre das Textfeld des Moduls gelöscht worden, würde kein Markup gerendert. Wenn Sie mit benutzerdefinierten Modulen arbeiten, gibt es eine vereinfachte widget.widget_name
-Syntax, die in diesem Beispiel beschrieben wird.
if-
-Anweisungen können mit zusätzlichen bedingten Anweisungen oder mit einer Regel, die ausgeführt wird, wenn die Bedingung oder die Bedingungen falsch sind, weiter verfeinert werden. elif
-Anweisungen ermöglichen es Ihnen, zusätzliche Bedingungen zu Ihrer Logik hinzuzufügen, die nach der vorherigen Bedingung ausgewertet werden else
-Anweisungen definieren eine Regel, die ausgeführt wird, wenn alle anderen Bedingungen falsch sind. Sie können eine unbegrenzte Anzahl von elif
-Anweisungen innerhalb einer einzigen if-Anweisung haben, aber nur eine else
-Anweisung.
Im Folgenden finden Sie ein Beispiel für die grundlegende Syntax einer if-Anweisung, die den Operator<= verwendet, um den Wert einer Variablen zu überprüfen. In diesem Beispiel würde die Vorlage Folgendes ausgeben: „Die angegebene Zahl der Variablen ist kleiner als oder gleich 6.“
Nachfolgend ein weiteres Beispiel, bei dem ein Auswahlmodul verwendet wird, um verschiedene Überschriften für eine Karriereseite auf der Grundlage der vom Benutzer gewählten Abteilung darzustellen. Das Beispiel verwendet den Operator ==, um auf bestimmte vordefinierte Werte im Auswahlmodul zu überprüfen.
unless
-Anweisungen sind genau wie if
-Anweisungen konditional, funktionieren aber nach der umgekehrten Logik. Der Code zwischen dem öffnenden und dem schließenden Tag wird gerendert und kompiliert, es sei denn, die einzelne boolesche Bedingung wird zu true ausgewertet. unless-Anweisungen beginnen mit einem unless
und enden mit einem endunless
.unless
-Anweisungen unterstützen else
, aber nicht elif
.
Nachfolgend ein Beispiel, bei dem die Überschrift „Wartungsarbeiten“ ausgegeben wird, sofern das Rich-Text-Feld keinen Wert erhält. Wenn das Rich-Text-Feld über Inhalt verfügt, wird dieser Inhalt angezeigt.
ifchanged
-Anweisungen. Diese Anweisungen können verwendet werden, um Markup nur dann zu rendern, wenn sich eine Variable seit einem früheren Aufruf dieses Tags geändert hat.if-
-Anweisungen. Diese können verwendet werden, um bedingte Logik knapp und gut verständlich mit Operatoren und Ausdruckstests zu schreiben.Vielen Dank, dass Sie Ihr Feedback mit uns geteilt haben.