Handlebars Template Engine

13. Juni 2017

Hin und wieder benötigt man eine Template Engine, die per (TML)Script angesteuert werden kann. Beispielsweise, wenn per TMLScript Mails erzeugt werden sollen oder zum Erzeugen von XML oder anderen Text-Formaten per Script.

Womodo hat für diesen Zweck seit langem die verbreitete Handlebars Template-Engine integriert und in womodo 7.4.2 haben wir diese Engine um einige sehr nützliche Funktionen erweitert.

Idealerweise initialisiert man Handlebars mit einen TMLContext Objekt, und greift per {{item}} oder {{META}} auf Items und Metas zu:

<tml:range var="_html">
<h1>{{TITLE}}</h1>
<p>
Sehr geehrter {{vorname}} {{nachname}}
</p>
...
</tml:range>

<tml:script>
return AFW.Handlebars.stringTemplate(_html, this)
</tml:script>

Das Beispiel zeigt den Titel und die Items "vorname" und "nachname" der aktuellen Seite mit Hilfe eines Handlebars Template an.

Helper

In womodo 7.4.2 haben wir nun CMS-spezifische "Helper" implementiert, die es z. B. erlauben, innerhalb des Templates den Seitenkontext zu wechseln oder über Unterseiten zu navigieren:

Sehr geehrter {{vorname}} {{nachname}},
vielen Dank für Ihre Bestellung:

<ul>
{{#nav "children" order="preis(asc)"}}
<li>{{TITLE}}, Preis: {{format preis "#,##0.00"}} €</li>
{{/nav}}
</ul>

{{#context "name:agb"}}
Bitte lesen Sie unsere <a href="{{url}}">AGB's</a>
{{/context}}

Die Liste aller neuen "Helper" haben wir im neuen Issue-Tracker zusammengefaßt.

Mails mit Handlebars erzeugen

Zum Erzeugen von Mails mit Hilfe von Handlebars empfiehlt es sich, das Template in einer Datei zu speichern und wie folgt auszuführen:

var mail = WGA.createMail()
mail.to = "meine@mail.de"
mail.subject = "Bestellung"
mail.body = AFW.Handlebars.resourceTemplate("templates/bestellung.html", this)
mail.send()

Mehr als diese 5 Zeilen Code sind nicht notwendig, um personalisierte Mails zu erzeugen. Das eigentliche Design der Mail erfolgt nun im Handlebars Template statt per String-Verkettung in Script.