Dynamische Web-Templates mit Dtemplate

Die Verwendung einer Template-Engine bietet einem die Möglichkeit, gemeinsame Seitenelemente in separate Dateien auszulagern und diese bei Bedarf in die Seiten zu importieren (auch jedes Mal mit unterschiedlichen Daten, falls dies gewünscht wird). Hierfür muss man zuerst die Webseite in separate Dateien („Mini-Templates“) aufteilen und dann für jedes Template ein entsprechendes Dtemplate-Objekt erstellen. Dann kann man jedes Template parsen, bei Bedarf Variablen-Interpolation durchführen und das Ergebnis jedes parse-Durchgangs an die bereits erzeugte Ausgabe anfügen, um eine zusammengesetzte Seite zu erzeugen.

Dies ist einfacher, als es sich anhört. Hier ein Beispiel zur Veranschaulichung: Angenommen, man hat eine Seite, die aus drei Abschnitten besteht – Kopfzeile, Fußzeile und der eigentliche Text. Diese Abschnitte teilt man auf drei separate Template-Dateien mit den Namen header.tmpl (Listing C), body.tmpl (Listing D) und footer.tmpl (Listing E) auf.

Nun braucht man nur noch ein Script, das jedes Template einliest, parst und aus allen dreien eine einzige Seite erzeugt. Ein Beispiel zeigt Listing F.

Da dieses Script mit drei Templates arbeiten muss und daher drei Dtemplate-Objekte erzeugt und referenziert werden müssen, wurde hier eine etwas abweichende Technik angewandt. Zuerst wurde ein Perl-Hash erstellt, der die Namen der Template-Dateien sowie einen bequemen Kurznamen für jede von ihnen enthält. Dann wird mithilfe einer Schleife für jede Datei ein Dtemplate-Objekt erzeugt. Diese Dtemplate-Objekte sind mithilfe der Syntax $templates->{Kurzname} zugänglich, wodurch man auf ihre individuellen Methoden einfach zugreifen kann.

Sobald die Dtemplate-Objekte erzeugt sind, braucht man nur noch jedes zu parsen und die jeweils enthaltenen Variablen durch die eigentlichen Inhalte zu ersetzen. Die Ausgabe jedes Durchgangs von parse() wird an die Ausgabe des vorigen Durchgangs angehängt, so dass Schritt für Schritt die Webseite entsteht. Das Endergebnis sollte etwa so wie in Abbildung A aussehen.

eBook
Abbildung A: Aus drei HTML-Templates und einem Logik-Template zusammengebaute Ausgabe

Der Vorteil? Man kann dieselben Templates für Kopf- und Fußzeile auf der gesamten Website verwenden, indem man sie bei Bedarf einfach importiert. Kopf- und Fußzeile können sogar für jede Seite individuell angepasst werden, indem man Template-Variablen für die veränderlichen Daten verwendet und sie in jedem Script durch unterschiedliche Werte ersetzt (die Variable $TITLE$ in Listing C ist ein Beispiel hierfür).

Aber das Beste ist: Falls man einmal Kopf- oder Fußzeile für die gesamte Website ändern möchte, muss der Designer nur eine einzige HTML-Datei bearbeiten!

Themenseiten: Anwendungsentwicklung, Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Dynamische Web-Templates mit Dtemplate

Kommentar hinzufügen

Schreibe einen Kommentar

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