tempELA

Eine der großen Stärken von WordPress sind die Themes. Wer HTML beherrscht, kann mit etwas PHP-Kenntnissen leicht einfache Themes bauen. Fortgeschrittenen ermöglicht die Tatsache, dass innerhalb der Template-Dateien eines Themes ohne Probleme zusätzlicher PHP-Code untergebracht werden kann, eine enorme Flexibilität. Der Preis hierfür ist jedoch der Verzicht auf eine Template Engine. Dies gilt auch für Widgets und Plugins.

Gerade bei umfangreicheren Plugins oder Widgets führt dies dazu, dass die einzelnen Dateien selbst bei ausgiebiger Kommentierung an Lesbarkeit verlieren. Für den Nutzer bedeutet es zudem, dass evtl. Änderungen im HTML-Bereich zur Anpassung an seine Bedürfnisse beim nächsten Update des Widgets oder Plugins wieder verschwunden sind.

tempELA ist eine Möglichkeit, bei der Entwicklung von Plugins und Widgets PHP von HTML sauber zu trennen und in Form von flexiblen Templates auszulagern.

Die Template Engine zum Download: tempela.zip

Der Vortrag vom WordCamp 2010 in Berlin dazu: tempela.pdf

tempELA im Einsatz

Hier im Blog verwende ich an vielen Stellen tempELA. Ein schönes Beispiel für die Verwendung sind dei Randnotizen. Über das neue Feature von WordPress 3, die custom post types werden kurze Mitteilungen verwaltet, die nicht im eigentlich Bereich der Post eingebunden werden sollen. tempELA sorgt hier dafür, dass nicht nur das Frotend damit gerendert wird, sondern auch das Backen des Plugins und die Widget-Einstellungen. Das Template selber sieht daher so aus:

<!-- ###frontend### start -->
<div class="randnotizen-widget font-type-two font-size-two line-height-two">
<p><strong>###TITLE###</strong>:<br />
###CONTENT###
###URL###</p>
</div>
<!-- ###frontend### ende -->
<!-- ###frontendurl### start -->
<br /><span>mehr unter: <a href="###URL###">###NAME###</a></span>
<!-- ###frontendurl### ende -->
<!-- ###backend### start -->
<p><label for="###FIELDTITLEID###">###FIELDTITLE###
<input class="widefat" id="###FIELDTITLEID###" name="###FIELDNAMETITLE###" type="text" value="###TITLE###" />
</label></p>
<p><label for="###POSTAMOUNT###">Post amount:
<input class="widefat" id="###POSTAMOUNTID###" name="###POSTAMOUNTNAME###" type="text" value="###POSTAMOUNT###" />
</label></p>
<!-- ###backend### ende -->
<!-- ###postedit### start -->
<label>URL: </label><input name="rand-url" value="###RANDURL###" size="80" />
<label>Name: </label><input name="rand-url-name" value="###RANDURLNAME###" size="40" />
<!-- ###postedit### start -->

Dadurch bleibt der gesamte Code des Plugins frei von HTML. Negativ auf die Performance wirkt sich tempELA an dieser Stelle nicht aus, da die Widgets allesamt gecacht werden (was auch unabhängig von tempELA eine gute Idee ist.

Das komplette Plugin steht hier zur Verfügung: randnotizen.zip

Kommentar verfassen