Logik in Vorlagen

Estimated reading: 5 minutes

Auch wenn eventbrain viele Platzhalter anbietet, kommen diese manchmal an ihre Grenzen. Einige Inhalte werden in großen Blöcken ausgegeben, man möchte aber nur eine bestimmte Information ausgeben oder nur Teile einer Tabelle. Auch sollen Inhalte oft nur unter bestimmten Bedingungen (“Nur anzeigen, wenn Hotel über uns”) angezeigt werden.

eventbrain ermöglicht hier sehr viel Individualität. Du brauchst nur etwas Mut (ein paar HTML-Kenntnisse schaden auch nicht) 😉

Eingabe von “Code”

Um “Code” eingeben zu können, musst du in die Quellcodeansicht des Templates wechseln. Klappe die zweite Menüzeile aus und klicke auf den Quellcode-Button:

Es öffnet sich die Quellcodeansicht. Diese zeigt HTML (zu erkennen an allem mit <>). HTML legt fest, wie etwas später aussehen soll. Klicks auf Editorfunktionen verändern diesen HTML-Code. Und dann siehst du hier auch wieder die Platzhalter wie z.B. {{ event.title }}, welcher später durch den Titel der Veranstaltung ersetzt wird.

Du kannst Platzhalter in dieser Ansicht auch einfach eintippen, wenn du den Code kennt, und benötigst die Platzhalter-Auswahl nicht.

Wir haben nun ein paar Möglichkeiten, hier zu “programmieren” und individuelle Ausgaben zu bauen.

Schleifen mit for

Im Hintergrund und damit nicht über Platzhalter verfügbar, stellen wir einige komplexe Inhalte so zur Verfügung, dass sie individuell ausgegeben werden können. Komplexe Inhalte sind solche, die mehrere Zeilen und Spalten haben, also eine Art “Datentabelle” sind. Das sind z.B. Deals, Gästelisten oder Preisprofile.
Diese Inhalte kannst du mit for-Schleifen durchlaufen lassen und nur das aus jeder Zeile ausgeben, was du möchtest.

Dies können wir mit dem Code

{* for ZEILE in FELD_DER_ZEILE *}
Ausgabe der Eigenschaft: {{ ZEILE.EIGENSCHAFT }}
{* endfor *}

Der {* for *}-Befehl in der ersten Zeile sagt, dass man durch alle Zeilen des Platzhalters FELD_DER_ZEILE gehen möchte, und die Variablen jeweils der ZEILE zuweisen möchte.
In der zweiten Zeile wird dann ein Feld der Zeile ausgegeben.
Die dritte Zeile {* endfor *} beendet dann die Definition der Schleife.

Beispiel
In eventbrain sind die Dealstufen so hinterlegt:

Diese Infos würden über den Platzhalter {{ booking_event_promoter.deal_configuration }} so ausgegeben:

Das ist vielleicht nicht das, was man möchte. Mit einer Schleife kann man selber durch alle Einträge gehen und nur die Felder anzeigen, die man möchte.

{% for row in agreement.deal_configuration_data %}{{ row.to }}<br>
    ab {{ row.from }}.Karte: {{ row.amount }}/{{ (100 - row.amount) }}
{% endfor %}

ergibt die Ausgabe:

ab 1.Karte: 50/50
ab 501.Karte: 40/60

Man kann auch HTML-Tabellen-Code und Schleifen verbinden und eigene Tabellen ausgeben lassen.

Welche Platzhalter für Schleifen geeignet sind und welche Informationen sie enthalten, findest du auf der Seite Platzhalter in diesem Handbuch.

Ein bestimmtes Feld einer Tabelle ausgeben

Wenn man nur ein bestimmtes Feld einer bestimmten Zeile einer eben beschriebenen Datentabelle ausgeben möchte, so ist das möglich. Man muss lediglich die Nummer der Zeile kennen. Hierbei ist es wichtig zu wissen, dass die Zeilenzählung mit 0 beginnt. Diesen gibt man vor dem Bezeichner der Eigenschaft an. Möchte man also direkt die “501” aus dem obigen Beispiel mit einem Platzhalter ausgeben, so geht dies mit folgendem Code:

{{ agreement.deal_configuration_data.1.from }}

agreement = Platzhalter-Gruppe
deal_configuration = Platzhalter
1 = Zeilennummer (-1)
from = Variable des gewünschten Wertes

Welche Platzhalter Datentabellen liefern und welche Informationen sie enthalten, findest du auf der Seite Platzhalter in diesem Handbuch.

Bedingungen mit if

Wenn ein Inhalt nur unter bestimmten Bedingungen angezeigt werden soll, dann kann man dies mit einem if-Befehl abfragen. Hierbei folgt nach dem if die abzuprüfende Bedingung. Es sind verschiedene Vergleiche möglich.

{% if BEDINGUNG %}
    Inhalt ausgeben
{* endif *}

Nur, wenn die BEDINGUNG erfüllt ist, wird Inhalt ausgegeben.

Folgende Bedingungen gibt es

Vergleich einer Zahl

> größer als
>= größer oder gleich
== gleich
<= kleiner oder gleich
< kleiner als

{* if agreement.deal_configuration_data.1.from > 500 *} 
   Der from-Wert in der zweiten Dealzeile ist größer als 500!
{* endif *}

Vergleich eines Textes

{* if artist.name == "Elvis" *} 
   Ich bin noch nicht tot!
{* endif *}

Ist Datentabelle gefüllt

{% if ticketing_data.guestlist_data %}
    <ul>
        {% for zeile in ticketing_data.guestlist_data %}
            <li>{{ zeile.lastname }}, {{ zeile.firstname }}</li>
        {% endfor %}
    </ul>
{% endif %}

Mehrere Bedingungen gleichzeitig prüfen

Verbinde die Bedingungen mit “and”

{% if temperature > 18 and temperature < 27 %}
    <p>It's a nice day for a walk in the park.</p>
{% endif %}

Entweder oder- Verkettungen von Bedingungen

Wenn die Bedingung erfüllt wurde, gib das eine aus. Falls nicht, das andere.

{% if ticketing_data.utilisation == 100}
   Ausverkauft
{% else %}
   Tickets verfügbar
{% endif %}

Es können auch beliebig viele elseif-Bedingungen zwischen if und else abgeprüft werden:

{% if ticketing_data.utilisation == 100}
   Ausverkauft
{% elseif ticketing_data.utilisation > 90}
   Nur noch wenige Karten!
{% else %}
   Von den wenigen Restkarten sind noch viele da.
{% endif %}

Rechnen

Handelt es sich bei einem Wert um eine Zahl, so kann mit ihr gerechnet werden. Das funktioniert übrigens auch in Bedingungen.

Rechenoperatoren:
+ = Addition
– = Subtraktion
/ = Division
* = Multiplikation
Am besten die Berechnung in Klammern fassen.

{{ (100 - row.amount) }}

Im folgenden Beispiel haben wir nur den Prozentwert für den Deal. Ziehen wir diesen auch noch von Hundert ab können wir den gängigen Dealsprech abbilden:

{{ row.amount }} / {{ (100 - row.amount) }}

wird bei einem row.amount Wert von 40 ausgegeben als

40 / 60
CONTENTS