Letzte Änderung: 28. August 2025
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 v3- oder v4-Single-Send-APIs übermittelt werden, funktionieren nicht innerhalb vonif
-Anweisungen, da die Vorlagen kompiliert werden, bevor die Informationen ausgefüllt werden.Grundlegende Syntax der if-Anweisung
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.
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.
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.
Verwendung von elif und else
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.“
unless-Anweisungen
unless
-Anweisungen sind genau wie if
-Anweisungen bedingte Anweisungen, 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
Zusätzlich zu if- und unless-Anweisungen unterstützt HubLifchanged
-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.
Inline-if-Anweisungen
HubL unterstützt inlineif-
-Anweisungen. Diese können verwendet werden, um bedingte Logik knapp und gut verständlich mit Operatoren und Ausdruckstests zu schreiben.