Aufbau einer Template-Datei

Bemerkung

Beachten Sie bitte, dass der Template-Parser sehr streng ist! Wenn die Anweisungen nicht exakt die hier aufgeführte Syntax aufweisen, werden Sie vom Parser nicht verarbeitet.

Ich weiß, dass dies vor allem bei den Variablen-Definitionen für Übersicht sorgen würde, aber ich habe momentan echt keine Lust darauf, mich damit herumzuschlagen, den Parser toleranter zu machen.

Nach oben

Variablen

Variablen werden beim Parsen der Template-Datei durch Werte ersetzt. Die Variablen können entweder im Script oder direkt in der Template-Datei definiert werden.

Variablen sind ganz simpel aufgebaut, es ist einfach nur ein beliebiger Name, der von geschweiften Klammern umgeben ist:

{Name}

Nach oben

Variablen-Definitionen

Neben der Möglichkeit, Variablen über das Script zu setzen, haben Sie auch die Möglichkeit, direkt in der Template-Datei Variablen zu definieren. Allerdings haben die Variablen, die aus dem Script stammen, Vorrang gegenüber den in der Template definierten.

Es gibt zwei Varianten, in der Template-Datei Variablen zu definieren. Die erste Variante ist eher für kürzere Texte gedacht:

{DEFINE Name "Wert"}

Hierbei erhält die Variable Name den Wert Wert. Der Name der Variable darf keine Leerzeichen oder Zeilenumbrüche oder das }-Zeichen enthalten.
Soll der Wert einen Zeilenumbruch verwenden, so müssen Sie diesen als \n angeben. Soll ein doppeltes Anführungszeichen im Wert vorkommen, so müssen Sie diesem ebenfalls einen Backslash voranstellen (\").

Die zweite Variante ist mehr für längere Werte gedacht:

{DEFINE Name}Wert{ENDDEFINE}

Auch hier erhält die Variable Name den Wert Wert. Der Name darf auch hier keine Leerzeichen oder Zeilenumbrüche oder das }-Zeichen enthalten. Der Wert darf jedes Zeichen, auch Zeilenumbrüche enthalten.

Nach dem Auslesen wird jeweils der ganze {DEFINE}-Abschnitt entfernt.

Nach oben

Bedingte Abschnitte

Mit Hilfe von bedingten Abschnitten können Sie testen, ob Variablen gesetzt sind oder nicht. Es sind also nur Wahr/Unwahr-Abfragen möglich, echte Vergleiche (z.B. mit Gleich, Ungleich usw.) lassen sich leider (noch) nicht durchführen.
Ein bedingter Abschnitt wird von einem {IF Name} (wobei Name für den Namen einer Variable steht) und von einem {ENDIF} abschlossen.

{IF Name}Das ist ein bedingter Abschnitt!{ENDIF}

Es ist übrigens möglich, auch mehrere IF-Blöcke ineinander zu verschachteln.
Weiterhin gibt es die Möglichkeit, {ELSE}-Abschnitte einzufügen. Die werden dann angezeigt, wenn die Bedingung nicht erfüllt, also false ist.

{IF Name}Bedingung erfüllt!{ELSE}Bedingung nicht erfüllt!{ENDIF}

Es ist außerdem möglich, einen Block zu verneinen:

{IF !Name}Bedingung nicht erfüllt!{ENDIF}

Verneinte Blöcke werden automatisch verarbeitet.

Nach oben

Schleifen

Schleifen sind Abschnitte, die mehrmals hintereinander ausgegeben werden. Dadurch können Sie darauf verzichten, für hintereinander auszugebende Abschnitte kleine Extra-Template-Dateien anzulegen.

Schleifen werden durch ein {LOOP} und dem Namen der Schleife eingeleitet und durch ein {ENDLOOP} abgeschlossen:

{LOOP Name}
Dies ist die Schleife mit dem Namen "Name"!
{ENDLOOP}

Sie haben nun die Möglichkeit, für jeden Schleifendurchgang einen Satz Variablen zu definieren (oder auch für alle auf einmal), bei denen man natürlich auch prüfen kann, ob sie gesetzt sind. Variablen für die Schleife sind etwas anders aufgebaut. Sie beginnen mit dem Namen der Schleife, dann kommt ein Punkt und dann der eigentliche Name der Variable. Dadurch gelten die Variablen wirklich nur für die Schleife.

{LOOP Test}
{IF Test.Variable}
Für diesen Schleifendurchgang wurde die Variable "Variable" gesetzt! Sie hat den Inhalt {Test.Variable}.
{ELSE}
Die Variable "Variable" wurde nicht gesetzt.
{ENDIF}
{ENDLOOP}

Vorsicht: Es ist derzeit noch nicht möglich, Schleifen ineinander zu verschachteln, d.h. in einer Schleife darf sich keine weitere Schleife befinden.

Nach oben

Includes

Mit Hilfe von {INCLUDE}-Anweisungen können Sie den Inhalt einer anderen Datei in die Template-Datei einfügen. Das ist zum Beispiel für immer wiederkehrende Abschnitte sinnvoll, beispielsweise Kopf und Fuß einer HTML-Datei.

Um den Inhalt einer anderen Datei in die Template-Datei in die Template einzufügen, geben Sie einfach an der entsprechenden Stelle diese Anweisung an:

{INCLUDE Dateiname}

Wenn der Dateiname Leerzeichen oder das }-Zeichen enthält, so müssen Sie den Dateinamen in doppelte Anführungszeichen setzen:

{INCLUDE "Andere Datei"}

Wenn Sie einen relativen Dateipfad angeben, so gilt dieser relativ zur Template-Datei. In älteren Versionen der Template-Klasse (Versionsnummer kleiner als 2.0) waren relative Pfade relativ zum Script.

Wenn sich in der einzubindenden Datei ebenfalls {INCLUDE}-Anweisungen befinden, so werden diese ebenfalls verarbeitet.

Nach oben

{TRIM}-Blöcke

Sie können bestimmte Abschnitte in {TRIM}...{ENDTRIM}-Blöcke einschließen. Beim Parsen der Template-Datei werden bei den Blöcken voran- oder nachgestellte Leerzeichen, Zeilenumbrüche (LF, CR, CRLF) und Tabulatoren entfernt, so als würde man in PHP die Funktion trim() oder in Python die String-Methode strip() auf den Block anwenden (in Perl wird das ganze mit zwei regulären Ausdrücken erreicht).

Sinnvoll können die {TRIM}-Blöcke zum Beispiel sein, wenn Sie in der Template-Datei viele Variablen definieren und nicht möchten, dass nach dem Auslesen überflüssige Leerzeichen übrigbleiben:

{TRIM}
{DEFINE name "Homer Simpson"}
{DEFINE email "homer.simpson@example.org"}
{ENDTRIM}

Ohne den {TRIM}-Block würden hier sinnlose Leerzeilen stehenbleiben.


Zur Übersicht


© 2002-2011 Patrick Canterino

Homepage: http://www.patshaping.de/
E-Mail: patrick@patshaping.de