1 <?xml version=
"1.0" encoding=
"iso-8859-1" ?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns=
"http://www.w3.org/1999/xhtml">
7 <title>Aufbau einer Template-Datei
</title>
8 <meta name=
"author" content=
"Patrick Canterino" />
9 <link rel=
"stylesheet" href=
"style.css" type=
"text/css" />
10 <base target=
"_self" />
12 <body bgcolor=
"#FFFFFF" text=
"#000000" link=
"#0000FF" vlink=
"#0000FF" alink=
"#0000FF">
14 <h1><a name=
"top" id=
"top">Aufbau einer Template-Datei
</a></h1>
17 <li><a href=
"#bemerkung">Bemerkung
</a></li>
18 <li><a href=
"#variablen">Variablen
</a></li>
19 <li><a href=
"#definitionen">Variablen-Definitionen
</a></li>
20 <li><a href=
"#bedingt">Bedingte Abschnitte
</a></li>
21 <li><a href=
"#schleifen">Schleifen
</a></li>
22 <li><a href=
"#includes">Includes
</a></li>
23 <li><a href=
"#trim"><code>{TRIM}
</code>-Bl
öcke
</a></li>
26 <h2><a name=
"bemerkung" id=
"bemerkung">Bemerkung
</a></h2>
28 <p>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.
</p>
30 <p>Ich wei
ß, dass dies vor allem bei den
<a href=
"#definitionen">Variablen-Definitionen
</a> f
ür
Übersicht sorgen w
ürde, aber ich habe momentan echt keine Lust darauf, mich damit herumzuschlagen, den Parser toleranter zu machen.
</p>
32 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
34 <h2><a name=
"variablen" id=
"variablen">Variablen
</a></h2>
36 <p>Variablen werden beim Parsen der Template-Datei durch Werte ersetzt. Die Variablen k
önnen entweder
<a href=
"parsen.htm#variablen-setzen">im Script
</a> oder
<a href=
"#definitionen">direkt in der Template-Datei
</a> definiert werden.
</p>
38 <p>Variablen sind ganz simpel aufgebaut, es ist einfach nur ein beliebiger Name, der von geschweiften Klammern umgeben ist:
</p>
44 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
46 <h2><a name=
"definitionen" id=
"definitionen">Variablen-Definitionen
</a></h2>
48 <p>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.
</p>
50 <p>Es gibt zwei Varianten, in der Template-Datei Variablen zu definieren. Die erste Variante ist eher f
ür k
ürzere Texte gedacht:
</p>
53 {DEFINE Name
"Wert
"}
56 <p>Hierbei erh
ält die Variable
<i>Name
</i> den Wert
<i>Wert
</i>. Der Name der Variable darf keine Leerzeichen oder Zeilenumbr
üche oder das }-Zeichen enthalten.
<br />
57 Soll der Wert einen Zeilenumbruch verwenden, so m
üssen Sie diesen als
<code>\n
</code> angeben. Soll ein doppeltes Anf
ührungszeichen im Wert vorkommen, so m
üssen Sie diesem ebenfalls einen Backslash voranstellen (
<code>\
"</code>).
</p>
59 <p>Die zweite Variante ist mehr f
ür l
ängere Werte gedacht:
</p>
62 {DEFINE Name}Wert{ENDDEFINE}
65 <p>Auch hier erh
ält die Variable
<i>Name
</i> den Wert
<i>Wert
</i>. Der Name darf auch hier keine Leerzeichen oder Zeilenumbr
üche oder das }-Zeichen enthalten. Der Wert darf jedes Zeichen, auch Zeilenumbr
üche enthalten.
</p>
67 <p>Nach dem Auslesen wird jeweils der ganze
<code>{DEFINE}
</code>-Abschnitt entfernt.
</p>
69 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
71 <h2><a name=
"bedingt" id=
"bedingt">Bedingte Abschnitte
</a></h2>
73 <p>Mit Hilfe von bedingten Abschnitten k
önnen Sie testen, ob
<a href=
"#variablen">Variablen
</a> 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.
<br />
74 Ein bedingter Abschnitt wird von einem
<code>{IF Name}
</code> (wobei
<i>Name
</i> f
ür den Namen einer Variable steht) und von einem
<code>{ENDIF}
</code> abschlossen.
</p>
77 {IF Name}Das ist ein bedingter Abschnitt!{ENDIF}
80 <p>Es ist
übrigens m
öglich, auch mehrere IF-Bl
öcke ineinander zu verschachteln.
<br />
81 Weiterhin gibt es die M
öglichkeit,
<code>{ELSE}
</code>-Abschnitte einzuf
ügen. Die werden dann angezeigt, wenn die Bedingung nicht erf
üllt, also
<i>false
</i> ist.
</p>
84 {IF Name}Bedingung erf
üllt!{ELSE}Bedingung nicht erf
üllt!{ENDIF}
87 <p>Es ist au
ßerdem m
öglich, einen Block zu verneinen:
</p>
90 {IF !Name}Bedingung nicht erf
üllt!{ENDIF}
93 <p>Verneinte Bl
öcke werden automatisch verarbeitet.
</p>
95 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
97 <h2><a name=
"schleifen" id=
"schleifen">Schleifen
</a></h2>
99 <p>Schleifen sind Abschnitte, die mehrmals hintereinander ausgegeben werden. Dadurch k
önnen Sie darauf verzichten, f
ür hintereinander auszugebende Abschnitte kleine Extra-Template-Dateien anzulegen.
</p>
101 <p>Schleifen werden durch ein
<code>{LOOP}
</code> und dem Namen der Schleife eingeleitet und durch ein
<code>{ENDLOOP}
</code> abgeschlossen:
</p>
105 Dies ist die Schleife mit dem Namen
"Name
"!
109 <p>Sie haben nun die M
öglichkeit, f
ür jeden Schleifendurchgang einen Satz
<a href=
"#variablen">Variablen
</a> zu definieren (oder auch f
ür alle auf einmal), bei denen man nat
ürlich auch pr
üfen kann, ob sie
<a href=
"#bedingt">gesetzt
</a> 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.
</p>
114 F
ür diesen Schleifendurchgang wurde die Variable
"Variable
" gesetzt! Sie hat den Inhalt {Test.Variable}.
116 Die Variable
"Variable
" wurde nicht gesetzt.
121 <p><b>Vorsicht:
</b> Es ist derzeit noch nicht m
öglich, Schleifen ineinander zu verschachteln, d.h. in einer Schleife darf sich keine weitere Schleife befinden.
</p>
123 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
125 <h2><a name=
"includes" id=
"includes">Includes
</a></h2>
127 <p>Mit Hilfe von
<code>{INCLUDE}
</code>-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.
</p>
129 <p>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:
</p>
135 <p>Wenn der Dateiname Leerzeichen oder das }-Zeichen enth
ält, so m
üssen Sie den Dateinamen in doppelte Anf
ührungszeichen setzen:
</p>
138 {INCLUDE
"Andere Datei
"}
141 <p>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.
</p>
143 <p>Wenn sich in der einzubindenden Datei ebenfalls
<code>{INCLUDE}
</code>-Anweisungen befinden, so werden diese ebenfalls verarbeitet.
</p>
145 <p class=
"upanddown"><a href=
"#top">Nach oben
</a></p>
147 <h2><a name=
"trim" id=
"trim"><code>{TRIM}
</code>-Bl
öcke
</a></h2>
149 <p>Sie k
önnen bestimmte Abschnitte in
<code>{TRIM}
</code>...
<code>{ENDTRIM}
</code>-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
<code>trim()
</code> oder in Python die String-Methode
<code>strip()
</code> auf den Block anwenden (in Perl wird das ganze mit zwei regul
ären Ausdr
ücken erreicht).
</p>
151 <p>Sinnvoll k
önnen die
<code>{TRIM}
</code>-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:
</p>
155 {DEFINE name
"Homer Simpson
"}
156 {DEFINE email
"homer.simpson@example.org
"}
160 <p>Ohne den
<code>{TRIM}
</code>-Block w
ürden hier sinnlose Leerzeilen stehenbleiben.
</p>
162 <hr width=
"80%" noshade=
"noshade" />
164 <p><a href=
"index.htm">Zur
Übersicht
</a></p>
166 <hr width=
"80%" noshade=
"noshade" />
168 <p style=
"font-size:8pt">© 2002-
2011 Patrick Canterino
</p>
170 <table border=
"0" cellspacing=
"0" style=
"font-size:8pt">
173 <td><a href=
"http://www.patshaping.de/">http://www.patshaping.de/
</a></td>
176 <td><a name=
"bottom" id=
"bottom">E-Mail:
</a></td>
177 <td><a href=
"mailto:patrick@patshaping.de">patrick@patshaping.de
</a></td>