HTML- & JSON-Ausgabe
HTML-sichere Block-Helfer
HTML-Editoren wie CKEditor erzwingen eine gültige HTML-Struktur. Setzen Sie Handlebars-Block-Helfer (etwa {{#each}}) als Freitext in eine <table>, verschiebt der Editor sie nach draußen, weil sie innerhalb einer Tabelle nicht erlaubt sind. Ergebnis: eine kaputte Vorlage.
Dagegen unterstützt die Vorlagen-Engine zwei eigene HTML-Datenattribute, mit denen Sie Handlebars-Block-Helfer direkt an ein Element hängen:
| Attribut | Beschreibung |
|---|---|
data-template-start | Der öffnende Handlebars-Ausdruck; wird bei der Verarbeitung als Text unmittelbar vor dem Element eingefügt |
data-template-end | Der schließende Handlebars-Ausdruck; wird als Text unmittelbar nach dem Element eingefügt |
Weil das gewöhnliche HTML-Attribute sind, hält der Editor das Element für gültiges HTML und lässt es in Ruhe. Der Präprozessor im Backend (AngleSharp) entfernt die Attribute und setzt den Ausdruckstext ein, bevor die Vorlage kompiliert wird — das Ergebnis ist identisch mit der Freitextvariante.
Alte Variante — bricht in HTML-Editoren:
{{#sortedArray __AdditionalData.statementOfFacts 'date'}}{{#each this}}
<tr>
<td>{{dateFormat date 'dddd dd-MM' 'en-US'}}</td>
<td>{{__DataFieldFormatting.event.__DisplayName}}</td>
<td>{{remarks}}</td>
</tr>
{{/each}}{{/sortedArray}}
Neue Variante — HTML-sicher:
<tr
data-template-start="{{#sortedArray __AdditionalData.statementOfFacts 'date'}}{{#each this}}"
data-template-end="{{/each}}{{/sortedArray}}"
>
<td>{{dateFormat date 'dddd dd-MM' 'en-US'}}</td>
<td>{{__DataFieldFormatting.event.__DisplayName}}</td>
<td>{{remarks}}</td>
</tr>
Wann Sie das brauchen
data-template-startunddata-template-endmüssen am selben Element stehen. Ein Element mit nur einem der beiden Attribute wird stillschweigend ignoriert.- Die Attributwerte werden wortwörtlich eingefügt — achten Sie darauf, dass öffnender und schließender Ausdruck zusammenpassen.
- Es funktioniert an jedem Element (
<tr>,<div>,<li>und so weiter), nicht nur an Tabellenzeilen.
Hinweis zur Umstellung: Bestehende Vorlagen mit Freitext-Handlebars um HTML-Elemente herum laufen weiter — von sich aus geht nichts kaputt. Umstellen müssen Sie erst, wenn Sie so eine Vorlage im HTML-Editor (CKEditor) öffnen und bearbeiten wollen. Beim Öffnen verschiebt der Editor die Freitextsyntax und zerlegt die Vorschau. Schreiben Sie die betroffenen Blöcke dann auf data-template-start / data-template-end um.
JSON-Ausgabe (roh und kodiert)
Die Vorlagen-Engine kann den aktuellen Datenkontext als JSON ausgeben. Es gibt zwei Varianten — achten Sie auf die Anzahl der geschweiften Klammern.
Rohes JSON — gibt unmaskiertes JSON aus (für eine JSON-Vorlage oder wo der Empfänger es direkt liest):
{{{ json this }}}
Kodiertes JSON — gibt HTML-kodiertes JSON aus (sicher innerhalb von HTML oder XML):
{{ this | json }}
Nehmen Sie die kodierte Form, wenn das JSON in einem HTML-Attribut oder Elementwert landet. Nehmen Sie die rohe Form, wenn das vollständige JSON-Objekt unverändert durchgereicht werden soll.