WebTML @{Pre-Prozessor}

6. November 2017

Mit WebTML steht womodo eine leistungsstarke <tag>-basierte Template Engine zur Verfügung. Mit der Einführung von Controllern in womodo ist die Präsentation der Daten (die View-Komponenten) im CMS noch einmal deutlich übersichtlicher und intuitiver geworden. Vom Autor gepflegte Inhalte und von Backend gelesene Daten werden per <tml:item>  oder <tml:meta> im Template ausgegeben.

Derzeit denken wir bei Innovation Gate darüber nach, ob gerade die Verwendung von <tml:item> und <tml:meta> durch den Einsatz eines "Pre-Prozessors" weiter vereinfacht werden könnte.


womodo pre-prozessor

Sehen wir uns ein typisches Template-Fragment einmal unter dem Gesichtspunkt der Lesbarkeit und schnellen Erfaßbarkeit der "View" genauer an:

<tml:foreach item="products">
<h1><tml:meta name="title"/></h1>
<p><tml:item name="desrciption"/></p>
<p class="meta">
veröffentlicht am <tml:meta name="created" format="dd.MM.yyyy"/>
</p>
</tml:foreach>

Hier wird "für alle Produkte" zunächst der Titel (Meta), dann die Beschreibung (Item) und dann das Veröffentlichungsdatum (Meta) ausgegeben. Und obwohl das alles soweit nachvollziehbar ist, könnte die Lesbarkeit durch eine spezielle @{Formulierung} für Metas und Items erhöht werden:

<tml:foreach item="products">
<h1>@{TITLE}</h1>
<p>@{desrciption}</p>
<p class="meta">
veröffentlicht am @{CREATED format="dd.MM.yyyy"}
</p>
</tml:foreach>

Warum ein solcher Pre-Prozessor?

Die meistem TML-<tag>s beschreiben eine Operation. So sagt <tml:foreach>, daß über eine Liste iteriert wird. Und das ist auch das erste, was einen Leser hier interessiert, um zu verstehen, was vorgeht.

Bei <tml:item> dagegen liegt das eigentliche Interesse nicht an der Operation "item", sondern vielmehr an dem Itemnamen. Ich interessiere mich weniger dafür, DASS etwas ausgegeben wird sondern vielmehr dafür, WAS ausgegeben wird. Aus diesem Grund ist @{description} leichter zu erfassen als <tml:item name="description"/>.

Womodo.next

In der kommenden Version von womodo haben wir experimentell einen solchen Pre-Prozessor implementiert und sind gespannt, was unsere Kunden damit für Erfahrungen machen.

Um den Pre-Prozessor für ein Template zu aktivieren, muß dieses als erste Zeile folgende Anweisung enthalten:

##MDSET preprocess=true

Dann werden beim Deployment alle Zeichenketten der Form @{XXX} zu <tml:meta name="xxx"/> und @{xxx} zu <tml:item name="xxx"/> gewandelt.

Tatsächlich beherrscht dieser Pre-Prozessor noch weitere Funktionen. So ist z. B. auch folgendes Konstrukt möglich:

@{:each products}
<h1>@{TITLE}</h1>
<p>@{desrciption}</p>
@{/each}

Mehr dazu im womodo Issue Tracker ...

Neue TML-Audrucksformen

Wichtig ist: es ist ein Pre-Prozessor und  keine neuen Template-Engine. Alle Pre-Prozessor-Anweisungen werden in WebTML umgesetzt. Der Pre-Prozessor bieten jedoch die Möglichkeit, WebTML als u. U. leichter lesbare Kurzanweisung zu erfassen.