Mit dem Notification Center Pro kannst du benutzerdefinierte Tokens erstellen, die du dann in deinen Benachrichtigungen verwenden kannst. Eigene Tokens basieren auf Twig-Template, d.h. du kannst von allen Twig-Funktionen profitieren, die du dir vom Contao-Templating gewohnt bist.
Da die Möglichkeiten praktisch endlos sind, sehen wir uns ein Beispiel an. Du kannst auch einen Blick auf unsere Beispielsammlung werfen, in der wir gängige Anwendungsfälle sammeln. Wenn du etwas hast, von dem du denkst, dass andere es verwenden könnten, lass es uns bitte wissen!
Stell dir vor, du hast im Contao-Formulargenerator ein Checkbox-Menü mit dem Namen colors
hinzugefügt, das wie folgt aussehen würde:
Im Notification Center bekommst du nun das folgende Token und den dazugehörigen Wert:
Token name | Value |
---|---|
##form_colors## | green, yellow |
Das ist grossartig, wenn du etwas in der Art in deiner Nachricht schreiben möchtest:
Hallo ##form_firstname##
Sie haben die folgenden Farben ausgewählt: ##form_colors##
Aber was wäre, wenn du stattdessen etwas wie das hier machen möchstest?
Hallo ##form_firstname##
{if form_colors == “green”}
Sie haben grün ausgewählt!
{endif}
Dies ist nicht möglich, weil der Wert nicht green
, sondern green, yellow
lautet. Und weil wir ein Formularfeld mit Mehrfachauswahl haben, könnten die Kombinationen auch nur green
oder green, blue
oder green, blue, yellow
usw. sein.
Wir bräuchten also ein zusätzliches Token, so dass wir am Ende zwei Tokens in unserer Benachrichtigung haben:
Token name | Value |
---|---|
##form_colors## | green, yellow |
##is_color_green## | yes |
Denn dann können wir in unserer Nachricht unser Ziel erreichen und dies schreiben:
Hallo ##form_firstname##
{if is_color_green == “yes”}
Sie haben grün ausgewählt!
{endif}
Gehen wir kurz durch diesen Screenshot:
is_color_green
, aber du kannst hier jeden beliebigen Namen verwenden. Stelle nur sicher, dass er nicht mit anderen Tokens kollidiert. Wenn du zum Beispiel mit dem Typ Contao Formulargenerator-Übertragungen
arbeitest, nenne dein Token nicht
form_is_color_green
, da dies zu einem Konflikt führen könnte.templates/notification_center_pro/custom_token/
befindet - in diesem Fall könntest du es also zum Beispiel
als templates/notification_center_pro/custom_token/is_color_green.html.twig
speichern.Hier ist der Twig-Code, der im Screenshot zu sehen ist und zum besseren Verständnis mit Kommentaren versehen ist:
{#
Wir wollen sicherstellen, dass es keinen Leerraum gibt, sondern nur unser
Token-Wert ausgegeben wird. Du kannst die Behandlung von Leerzeichen in Twig
steuern, um genau das zu erreichen, was du möchtest. Siehe
https://twig.symfony.com/doc/3.x/templates.html#templates-whitespace-control
für weitere Informationen.
#}
{% apply spaceless %}
{#
Zunächst einmal ist es immer wichtig, das gesamte Template in eine if-Anweisung
zu verpacken, um zu prüfen, ob überhaupt ein ##form_colors##-Token angegeben wurde.
Der einfachste Weg ist die Verwendung der Methode "has()" auf unseren rawTokens.
#}
{% if rawTokens.has('form_colors') %}
{#
Hier ist ein Beispiel, wie du eine Zeichenkette mit ", " trennen kannst, wenn
sie das Format "green, red, blue" hat.
#}
{% set colors = parsedTokens.form_colors|split(', ') %}
{#
Wir haben nun in dieser Vorlage eine Variable mit dem Namen "colors" definiert,
die nun ein Array enthält. Wir können also unseren gewünschten Token-Inhalt erreichen,
indem wir prüfen, ob "green" Teil dieses Arrays ist und entsprechend "yes" oder
"no" ausgeben.
Natürlich ist das Speichern in einer zusätzlichen Variable optional. Es dient hier
lediglich zur Veranschaulichung, wie komplexere Templates geschrieben werden könnten.
#}
{% if 'green' in colors %}yes{% else %}no{% endif %}
{% endif %}
{% endapply %}
Das war’s, du hast jetzt ein Token is_color_green
, das entweder yes
oder no
enthält. Herzlichen Glückwunsch! 🎉