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.


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!

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Supercomputer-Ranking: Vier europäische Systeme in den Top Ten

Einziger Neueinsteiger ist das Alps-System in der Schweiz. Die weiteren Top-Ten-Systeme aus Europa stehen in…

1 Woche ago

Angriffe mit Banking-Malware auf Android-Nutzer nehmen weltweit zu

Im vergangenen Jahr steigt ihre Zahl um 32 Prozent. Die Zahl der betroffenen PC-Nutzer sinkt…

1 Woche ago

Künstliche Intelligenz fasst Telefonate zusammen

Die App satellite wird künftig Telefongespräche in Echtzeit datenschutzkonform mit Hilfe von KI zusammenfassen.

1 Woche ago

MDM-Spezialist Semarchy stellt Data-Intelligence-Lösung vor

Als Erweiterung von Master-Data-Management ermöglicht es die Lösung, den Werdegang von Daten verstehen und sie…

1 Woche ago

Apple stopft 15 Sicherheitslöcher in iOS und iPadOS

Sie erlauben unter anderem das Einschleusen von Schadcode. In älteren iPhones und iPads mit OS-Version…

1 Woche ago

Hochleistungs-NAS-Speicher für KI-Daten

Neuer Speicher für KI von Huawei mit integrierter Ransomware-Erkennungs-Engine und deutlich geringerem Energiekonsum.

1 Woche ago