Grundsatzdiskussionen: Template Tags

Und wieder einmal hat ein kleiner Unterschied in der Sichtweise eine heiße Diskussion ausbrechen lassen: Template Tags in WordPress.

Der Blogdesigner findet Template Tags toll, da man mit ihnen und den verfügbaren Parametern schnell Änderungen im Blogdesign bewirken kann. So nehme auch ich den Begriff „Template Tag“ schnell in den Mund, um mein Anliegen zu erklären.

Der Entwickler, in diesem Falle tucci, sträubt sich gegen diesen Begriff. Template Tags sind für ihn spezielle Kurzanweisungen, die dann ihrerseits Programmcode aufrufen. Statt ellenlanger Skripte bleiben nur kurze Anweisungen zurück, die leicht übertragen oder verändert werden können. Im Falle von WordPress sind es aber Funktionen, und die haben in einem „richtigen“ Template-Tag nichts verloren.

Bei Movable Type sehen Template Tags z.B. so aus <$MTEntryExcerpt$> (der Auszug des Blogeintrags). Ein anderes Beispiel sind Templatesysteme wie Smarty und FastTemplate, die eine strikte Trennung von Code und Design anstreben. So kann ein Template Tag in FastTemplate z.B. so aussehen: {PAGETITLE}, also der Titel der Seite. Der Vorteil von diesen Templatesystemen liegt in der Trennung der Aufgabenbereiche: Der Designer kann das HTML bearbeiten, ohne über PHP-Code zu stolpern und diesen eventuell zu verändern oder zerstören.

Und wo der Programmierer Recht hat, hat er Recht. WordPress Template Tags werden im WordPress-Codex auch so definiert: Als PHP-Funktion. Ein WordPress Template Tag besteht immer aus folgenden Bestandteilen:

Der PHP Code Tag

Da WordPress auf PHP basiert, werden PHP-Aufrufe in den Templates in folgenden Tag eingepackt: <?php ?>. Alles innerhalb dieses Tags wird vom PHP-Interpreter verarbeitet, in unserem Falle werden innerhalb des Tags also die WordPressfunktionen platziert, die die dynamischen Inhalte des Blog generieren.

Die WordPress-Funktion

Eine WordPress-Funktion oder Template-Funktion ist eine PHP-Funktion, die eine bestimmte Aktion ausführt oder Informationen über den Blog ausgibt. Und wie eine PHP-Funktion besteht eine WordPressfunktion aus einer Textzeile (ein oder mehrere Wörter, ohne Leerzeichen), öffnenden und schließenden Klammern und typischerweise einem Semicolon, das den Code beendet.
Ein Beispiel ist:

<?php the_ID(); ?>

Optionale Parameter

Zusätzlich kann die Funktion des Tags über verschiedene Parameter gesteuert werden. Der Templatetag bloginfo(), der den Parameter show besitzt. Diesem Parameter geben wir den Wert ’name‘:

<?php bloginfo('name'); ?>

Wir erhalten auf unserem Blog die Anzeige „Script Artists“. Einige Funktionen erlauben keine Parameter, andere sogar eine Reihe von verschiedenen Parametern, mehr dazu im WordPress Codex – How to pass tag parameters.

Also sind die Template Tags in WordPress wirklich nur Funktionen, die Formulierung Template Tag wirklich etwas missverständlich gewählt, denn ein Templatesystem wie Smarty besitzt WordPress nicht. Wie wäre es mit „Template-Funktionen“, also „template functions“?

Wenn ihr euch fragt, warum ich das schreibe, dann müsst ihr folgendes wissen: Ich kannte zwar Smarty und habe es auch mehrfach benutzt, aber dieser Definitionsunterschied war mir nicht bewusst. Jetzt bin ich um einiges schlauer – aber ich denke, ich werde wohl weiterhin „Template Tags“ sagen.

Ein Gedanke zu „Grundsatzdiskussionen: Template Tags“

  1. Den Begriff Template-Tags würde ich wohl nie Einsetzen. Templates können in der Web-Entwicklung so verschieden aussehen, das es da keine eindeutige Definition des Tag-Begriffes geben kann. Sicher in einigen Template-Engines gibt es solche Short-Tags wie {NAME} und {$variable}. Aber ist nicht jedes HTML-Element in einem Template auch ein Template-Tag? Hinter all diesen Tags steckt irgend eine Funktionalität. Und das haben alle gemeinsam, selbst die Tags in WordPress. Bei Template-Engines wie Smarty werden lediglich Aliase für diese Funktionalität verwendet.

    Zur Diskussion sollte eher stehen ob die Vermischung von Funktion und Darstellung wie es in WordPress stattfindet nicht jämmerlich veraltet ist. Den mit solchem Code kommt man nicht weg von der strukturierten Programmierung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.