Templates für Benachrichtigungen und Reports
Templates für Benachrichtigungen und Reports können mit dynamischen Inhalten und Strukturen gestaltet werden. Dazu kann Liquid als Template-Sprache in Bloqs verwendet werden.
Die Dokumentation von Liquid bietet detaillierte Informationen über die Verwendung der Template-Sprache. Von der Syntax, der Handhabung von Listen und Konditionen bis zur Verwendung von Filter ist dort alles beschrieben. Darum beschränken sich die weiteren Abschnitte ausschliesslich auf die für Bloqs spezifischen Eigenschaften und Anwendungsfälle.
Getting Started
Um Templates zu Erstellen und zu Testen, steht das Admin-Tool Template-Tester zur Verfügung. Mit diesem Tool können Templates mit echten Daten angereichert und eine Vorschau generiert werden.
Im Tester kann ein Kontext-Objekt als Basis für das Template ausgewählt werden. Das Template wird dann mit den Daten von diesem Objekt angereichert.
Kontext, Objekt und Eigenschaften
Im Template steht normalerweise ein Objekt als Kontext zur Verfügung. D.h. es kann direkt auf die Eigenschaften des Objekts zugegriffen werden.
Beispielsweise können bei einer Person
direkt die Eigenschaften {{ FirstName}}
und {{ LastName }}
im Template verwendet werden.
Zusätzlich stehen folgende Eigenschaften, unabhängig von der Metaklasse des Objekts zur Verfügung:
Eigenschaft | Beschreibung | Beispiel |
---|---|---|
| Der Titel des Hauptobjektes | Subject für eine E-Mail mit dem Namen des veränderten Objektes: |
| Der Primärschlüssel des Hauptobjektes |
|
| Der Name der Meta-Klasse des Hauptobjektes |
|
| Absolute URL (z.B. für E-Mail) Für korrekte Funktion muss Server:ApplicationDomainBasePath gesetzt sein (siehe Konfigurationsschlüssel) | E-Mail Text mit Link auf das veränderte Objekt: |
| Link in Markdown Für korrekte Funktion muss Server:ApplicationDomainBasePath gesetzt sein (siehe Konfigurationsschlüssel) | Der Link auf das betroffene Objekt in einer In-App Notification mit dem der User direkt auf das Objekt navigieren kann: |
Eigenschaften von Benachrichtigungen
Bei Benachrichtigungen stehen zusätzlich folgende Eigenschaften zur Verfügung:
Eigenschaft | Beschreibung | Beispiel |
---|---|---|
| Empfänger der Notification |
|
| Benutzer der die Benachrichtigung initiiert hat. |
|
| Liefert das Objekt auf die Instanz der Benachrichtigung selbst. So kann auf die Properties der Notification zugegriffen werden. | Datum an dem die Benachrichtigung initiiert wurde.
|
Ereignisparameter
Zusätzlich zu der Liste der oben definierten Eigenschaften stehen bei Benachrichtigungen die Ereignisparameter zur Verfügung:
Expressions
Mit dem Expression-Tag {% exp ... %}
können Expressions im Template integriert werden. Viele der Funktionen, die als Expression zur Verfügung stehen, können aber direkt in Liquid implementiert werden. Die Liquid-Implementation ist dann zu bevorzugen.
Beispiele:
{% exp 2 == 2 %}
wird zuTrue
{% exp String.toupper(Value) %}
wird zuENCODO
beiValue = Encodo
Bilder
Um Bilder in HTML-Templates darzustellen, steht der Filter image
zur Verfügung.
Einfaches Bild | {{ Stream | image type: 'image/svg+xml' }} |
---|---|
Bild mit “alt” Text | {{ Stream | image type: 'image/svg+xml' alt: 'Logo' }} |
Bild mit “alt” Text und Grösse | {{ Stream | image type: 'image/svg+xml' alt: 'Logo' width: '200' height: '100' }} |
Damit das Bild korrekt dargestellt werden kann, muss zwingend der Media-Type angegeben werden.
Übersicht über verschiedene Media-Types: https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht#I
Markdown to Html
Um Markdown-Inhalte eines Felds zu Html zu konvertieren, steht der Filter markdown_to_html
zur Verfügung.
Beispiel:
{{ MyMarkdownField | markdown_to_html }}
Migration von Templates
Liquid kennt keine Strukturen [[ ... ]]
wie bei bestehenden Templates. Dafür können mithilfe von Control flow und Iterationen viel komplexere und feinere Templates umgesetzt werden.
Beispiel für eine Migration eines bestehenden Templates mit Strukturen.
Der Prefix
Object.
für das Basisobjekt sollte nicht mehr verwendet werden.Die Struktur
[[List:]]
wird durch Control Flow und Iterationen in Liquid ersetzt.Die Liquid-Syntax bevorzugt Leerzeichen innerhalb von
{{ ... }}
und{% ... %}
Bestehendes Template | Liquid Template |
---|---|
Hi {{Object.FirstName}} {{Object.LastName}}
This is an e-mail template with some lead-in text and then some blocks.
[[List: Source="Company.Offices"]]
[[Header]]
ListHeader:
[[/Header]]
[[Detail VisibleIf="1==1"]]
{{Item.Name}}
[[/Detail]]
[[Detail VisibleIf="1==2"]]
Not visible
[[/Detail]]
[[Footer]]
ListFooter
[[/Footer]]
[[/List]]
Thanks & Greets
{{Company.Name}} | Hi {{ FirstName }} {{ LastName }}
This is an e-mail template with some lead-in text and then some blocks.
{% if Company.Offices.size > 0 %}
ListHeader:
{% for office in Company.Offices %}
{% if 1 == 1 %}
{{ office.Name }}
{% endif %}
{% if 1 == 2 %}
Not visible
{% endif %}
{% endfor %}
ListFooter
{% endif %}
Thanks & Greets
{{ Company.Name }} |