Handlebars Template Engine
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.