Als fortgeschrittene Variante von Platzhaltern, kannst Du bedingte Logik mit Hilfe von Twig nutzen, um deine Landingpage, E-Mails und Tickets weiter zu personalisieren.
Bedingte Logik trifft Entscheidungen basierend auf bestimmten Bedingungen. Wir alle verwenden bedingte Logik in unserem täglichen Leben, zum Beispiel:
- Falls es draußen kalt ist, trage einen Mantel
- Falls der Gast ein VIP ist, kostet der Mantel 5€
Um diese Bedingung in einer Vorlage (E-Mail oder PDF-Ticket) zu verwenden, musst du eine einzelne geschweifte Klammer gefolgt vom Prozentzeichen verwenden.
{% bedingung %}
Zusätzlich dazu ist es erforderlich, einen Öffnungs- und einen Schließungs-Tag zu verwenden. Der Öffnungs-Tag enthält ein if gefolgt von der Bedingung und der Schließungs-Tag endif:
{% if bedingung %}
{% endif %}
Und schließlich wird zwischen diesen beiden Tags die Entscheidung getroffen. Jetzt können wir unser vorheriges Beispiel 'Wenn es draußen kalt ist, ziehe einen Mantel an' wie folgt darstellen:
{% if wetter == "kalt" %} Trage einen Mantel. {% endif %}
Aber wie gehen wir mit dem folgenden Beispiel um: ‘Falls der Gast ein VIP ist, kostet der Mantel 5€’?
VIP ist der Titel der Variablen, aber die Variable selbst kann zum Beispiel contact.extended_fields.vip_level sein, und was zählt, ist der Wert.
Dieser kann ja oder nein, wahr oder falsch, 1 oder 0 sein. Es kann jeder Wert sein, der uns sagt, ob contact.extended_fields.vip_level VIP ist oder nicht.
Das bedeutet, dass wir, wenn wir prüfen, contact.extended_fields.vip_level == "ja" ist, tatsächlich überprüfen, ob "ja" == "ja" oder "nein" == "ja" ist. Und nach dem Vergleich beider Seiten erhalten wir erneut wahr oder falsch, abhängig von den Umständen.
Beenden des Beispiels:
{% if contact.extended_fields.vip_level == "ja" %}Der Mantel kostet 5€.{% endif %}
Vollständige Liste der Vergleichsoperatoren:
- Gleich (==) — gibt wahr zurück, wenn der Wert auf der linken Seite dem Wert auf der rechten Seite entspricht, ansonsten gibt es falsch zurück.
- Nicht gleich (!=) — gibt wahr zurück, wenn der Wert auf der linken Seite ungleich dem Wert auf der rechten Seite ist, ansonsten gibt es falsch zurück.
- Kleiner als (<) — gibt wahr zurück, wenn der Wert auf der linken Seite kleiner ist als der Wert auf der rechten Seite, ansonsten gibt es falsch zurück.
- Größer als (>) — gibt wahr zurück, wenn der Wert auf der linken Seite größer ist als der Wert auf der rechten Seite, ansonsten gibt es falsch zurück.
- Kleiner oder gleich (<=) — gibt wahr zurück, wenn der Wert auf der linken Seite kleiner oder gleich dem Wert auf der rechten Seite ist, ansonsten gibt es falsch zurück.
- Größer oder gleich (>=) — gibt wahr, wenn der Wert auf der linken Seite größer oder gleich dem Wert auf der rechten Seite ist, ansonsten gibt es falsch zurück.
Hier sind einige Beispiele für Vergleichsoperatoren, die in E-Mail-Vorlagen verwendet werden können:
... {% if contact.sex == 'female' %}Ms. ...
{% if contact.language == 'EN' %} ...
Die beiden einfachen Anführungszeichen ('') oder doppelten Anführungszeichen ("") werden verwendet, um einen leeren Wert darzustellen. Also fragst du in folgendem Beispiel: 'Wenn der Variablentitel nicht leer ist, dann zeige den Titel'. Alternativ gibt es auch die Möglichkeit (is not empty), um einen leeren Wert zu prüfen.
{% if contact.title != '' %}{{ contact.title }} {% endif %}
{% if contact.title is not empty %}{{ contact.title }} {% endif %}
Logische Operatoren
Zusätzlich zu den Vergleichsoperatoren gibt es auch logische Operatoren. Diese Operatoren kombinieren mehrere boolesche(2) Ausdrücke oder Werte und liefern einen einzelnen booleschen Ausgang. Die Operatoren sind (and) und (or).
(2) Boolean: wahr oder falsch Ausdrücke
- and — Dieser Operator gibt wahr zurück, wenn und nur wenn die Ausdrücke auf beiden Seiten davon wahr sind.
- or — Dieser Operator gibt wahr zurück, wenn der Ausdruck auf einer der beiden Seiten davon wahr ist. Andernfalls gibt er falsch zurück.
Beispiel einer Verwendung des and Operators
Name | Unterkunft | Shuttle |
{{contact.first_name}} |
{{contact.extended_fields.unterkunft}} |
{{contact.extended_fields.shuttle}} |
Devon | ja | ja |
Nolan | nein | nein |
Misha | nein | ja |
{% if contact.extended_fields.unterkunft == 'ja' and contact.extended_fields.shuttle == 'ja' %}
Zeige einen bestimmten Inhalt
{% endif %}
Devon, die erste Person auf der Liste, ist die einzige Person, die den Inhalt zu sehen bekommt, die anderen nicht, da die Werte beider ihrer Variablen nicht wahr sind.
Beispiel einer Verwendung des or Operators:
Name | Position |
{{contact.first_name}} | {{contact.extended_fields.position}} |
Devon | CEO |
Nolan | CFO |
Misha |
{% if contact.extended_fields.position == 'CEO' or contact.extended_fields.position == 'CFO' %}
Zeige einen bestimmten Inhalt
{% endif %}
Nun sehen Devon und Nolan beide den Inhalt, aber da Misha keinen Wert in der Variable contact.extended_fields.position hat, wird er den Inhalt nicht sehen.
Mehr über bedingte Logik
Bisher haben wir ein mögliches Szenario für 'tu das, wenn diese Bedingung erfüllt ist' gesehen, aber wir können auch sagen 'tu das, wenn diese Bedingung erfüllt ist, sonst tu das andere'.
{% if contact.sex == 'female' %}
Mrs.
{% else %}
Mr.
{% endif %}
In diesem Fall sagen wir, wenn contact.sex gleich 'female' ist, dann zeige “Mrs." an, ansonsten zeige "Mr." an, aber wenn aus irgendeinem bestimmten Grund der Wert von contact.sex leer ist, sehen wir immer noch "Mrs.".
Eine Möglichkeit, dieses Problem zu korrigieren, besteht darin, eine elseif - Anweisung zu verwenden.
{% if contact.sex == 'female' %}
Mrs.
{% elseif contact.sex == 'male' %}
Mr.
{% endif %}
Eine noch bessere Lösung besteht darin, beide zu kombinieren, indem man sowohl eine else- als auch eine elseif - Anweisung verwendet.
Sehr {% if contact.sex == 'female' %}geehrte Frau
{% elseif contact.sex == 'male' %}geehrter Herr
{% else %}geehrte(r) Frau/Herr {% endif %}
{{ contact.last_name}},
Beispiel von einem echten Event
E-Mail Vorlage mit Platzhaltern und bedingter Logik
Gerenderte E-Mail
Templates zum kopieren
Anrede nach Geschlecht (DE)
Liebe(r) (DE)
Liebe{% if contact.sex == 'female' %} {{contact.first_name}}{% elseif contact.sex == 'male' %}r {{contact.first_name}}{% else %}(r) {{contact.first_name}}{% endif %},
Liebe Frau / Lieber Herr (DE)
Liebe{% if contact.sex == 'female' %} Frau {{contact.last_name}}{% elseif contact.sex == 'male' %}r Herr {{contact.last_name}}{% else %}(r) {{contact.first_name}} {{contact.last_name}} {% endif %},
Sehr geehrte(r) Frau / Herr Dr. (DE)
Sehr {% if contact.sex == 'female' %}geehrte Frau {% if contact.title != '' %}{{ contact.title }} {% endif %}{{contact.last_name}}{% elseif contact.sex == 'male' %}geehrter Herr {% if contact.title != '' %}{{ contact.title }} {% endif %}{{contact.last_name}}{% else %}geehrte(r) {% if contact.title != '' %}{{ contact.title }} {% endif %}{{contact.full_name}}{% endif %},
Saluation depending on gender (EN)
Dear first name (EN)
Dear {{contact.first_name}},
Dear Ms / Mr last name (EN)
Dear {% if contact.sex == 'female' %}Ms {% elseif contact.sex == 'male' %}Mr {% else %}Ms/Mr {% endif %}{% endif %}{{ contact.last_name }},
Dear title last name (EN)
Dear {% if contact.title != '' %}{{ contact.title }} {% else %}{% if contact.sex == 'female' %}Ms {% elseif contact.sex == 'male' %}Mr {% else %}Ms/Mr {% endif %}{% endif %}{{ contact.last_name }},