]> git.p6c8.net - template-class.git/blob - doc/aufbau.htm
template.py funktioniert auch unter Python 2.7.
[template-class.git] / doc / aufbau.htm
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">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head>
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" />
11 </head>
12 <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#0000FF" alink="#0000FF">
13
14 <h1><a name="top" id="top">Aufbau einer Template-Datei</a></h1>
15
16 <ul id="content">
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&ouml;cke</a></li>
24 </ul>
25
26 <h2><a name="bemerkung" id="bemerkung">Bemerkung</a></h2>
27
28 <p>Beachten Sie bitte, dass der Template-Parser sehr streng ist! Wenn die Anweisungen nicht exakt die hier aufgef&uuml;hrte Syntax aufweisen, werden Sie vom Parser nicht verarbeitet.</p>
29
30 <p>Ich wei&szlig;, dass dies vor allem bei den <a href="#definitionen">Variablen-Definitionen</a> f&uuml;r &Uuml;bersicht sorgen w&uuml;rde, aber ich habe momentan echt keine Lust darauf, mich damit herumzuschlagen, den Parser toleranter zu machen.</p>
31
32 <p class="upanddown"><a href="#top">Nach oben</a></p>
33
34 <h2><a name="variablen" id="variablen">Variablen</a></h2>
35
36 <p>Variablen werden beim Parsen der Template-Datei durch Werte ersetzt. Die Variablen k&ouml;nnen entweder <a href="parsen.htm#variablen-setzen">im Script</a> oder <a href="#definitionen">direkt in der Template-Datei</a> definiert werden.</p>
37
38 <p>Variablen sind ganz simpel aufgebaut, es ist einfach nur ein beliebiger Name, der von geschweiften Klammern umgeben ist:</p>
39
40 <pre class="code">
41 {Name}
42 </pre>
43
44 <p class="upanddown"><a href="#top">Nach oben</a></p>
45
46 <h2><a name="definitionen" id="definitionen">Variablen-Definitionen</a></h2>
47
48 <p>Neben der M&ouml;glichkeit, Variablen &uuml;ber das Script zu setzen, haben Sie auch die M&ouml;glichkeit, direkt in der Template-Datei Variablen zu definieren. Allerdings haben die Variablen, die aus dem Script stammen, Vorrang gegen&uuml;ber den in der Template definierten.</p>
49
50 <p>Es gibt zwei Varianten, in der Template-Datei Variablen zu definieren. Die erste Variante ist eher f&uuml;r k&uuml;rzere Texte gedacht:</p>
51
52 <pre class="code">
53 {DEFINE Name &quot;Wert&quot;}
54 </pre>
55
56 <p>Hierbei erh&auml;lt die Variable <i>Name</i> den Wert <i>Wert</i>. Der Name der Variable darf keine Leerzeichen oder Zeilenumbr&uuml;che oder das }-Zeichen enthalten.<br />
57 Soll der Wert einen Zeilenumbruch verwenden, so m&uuml;ssen Sie diesen als <code>\n</code> angeben. Soll ein doppeltes Anf&uuml;hrungszeichen im Wert vorkommen, so m&uuml;ssen Sie diesem ebenfalls einen Backslash voranstellen (<code>\&quot;</code>).</p>
58
59 <p>Die zweite Variante ist mehr f&uuml;r l&auml;ngere Werte gedacht:</p>
60
61 <pre class="code">
62 {DEFINE Name}Wert{ENDDEFINE}
63 </pre>
64
65 <p>Auch hier erh&auml;lt die Variable <i>Name</i> den Wert <i>Wert</i>. Der Name darf auch hier keine Leerzeichen oder Zeilenumbr&uuml;che oder das }-Zeichen enthalten. Der Wert darf jedes Zeichen, auch Zeilenumbr&uuml;che enthalten.</p>
66
67 <p>Nach dem Auslesen wird jeweils der ganze <code>{DEFINE}</code>-Abschnitt entfernt.</p>
68
69 <p class="upanddown"><a href="#top">Nach oben</a></p>
70
71 <h2><a name="bedingt" id="bedingt">Bedingte Abschnitte</a></h2>
72
73 <p>Mit Hilfe von bedingten Abschnitten k&ouml;nnen Sie testen, ob <a href="#variablen">Variablen</a> gesetzt sind oder nicht. Es sind also nur Wahr/Unwahr-Abfragen m&ouml;glich, echte Vergleiche (z.B. mit Gleich, Ungleich usw.) lassen sich leider (noch) nicht durchf&uuml;hren.<br />
74 Ein bedingter Abschnitt wird von einem <code>{IF Name}</code> (wobei <i>Name</i> f&uuml;r den Namen einer Variable steht) und von einem <code>{ENDIF}</code> abschlossen.</p>
75
76 <pre class="code">
77 {IF Name}Das ist ein bedingter Abschnitt!{ENDIF}
78 </pre>
79
80 <p>Es ist &uuml;brigens m&ouml;glich, auch mehrere IF-Bl&ouml;cke ineinander zu verschachteln.<br />
81 Weiterhin gibt es die M&ouml;glichkeit, <code>{ELSE}</code>-Abschnitte einzuf&uuml;gen. Die werden dann angezeigt, wenn die Bedingung nicht erf&uuml;llt, also <i>false</i> ist.</p>
82
83 <pre class="code">
84 {IF Name}Bedingung erf&uuml;llt!{ELSE}Bedingung nicht erf&uuml;llt!{ENDIF}
85 </pre>
86
87 <p>Es ist au&szlig;erdem m&ouml;glich, einen Block zu verneinen:</p>
88
89 <pre class="code">
90 {IF !Name}Bedingung nicht erf&uuml;llt!{ENDIF}
91 </pre>
92
93 <p>Verneinte Bl&ouml;cke werden automatisch verarbeitet.</p>
94
95 <p class="upanddown"><a href="#top">Nach oben</a></p>
96
97 <h2><a name="schleifen" id="schleifen">Schleifen</a></h2>
98
99 <p>Schleifen sind Abschnitte, die mehrmals hintereinander ausgegeben werden. Dadurch k&ouml;nnen Sie darauf verzichten, f&uuml;r hintereinander auszugebende Abschnitte kleine Extra-Template-Dateien anzulegen.</p>
100
101 <p>Schleifen werden durch ein <code>{LOOP}</code> und dem Namen der Schleife eingeleitet und durch ein <code>{ENDLOOP}</code> abgeschlossen:</p>
102
103 <pre class="code">
104 {LOOP Name}
105 Dies ist die Schleife mit dem Namen &quot;Name&quot;!
106 {ENDLOOP}
107 </pre>
108
109 <p>Sie haben nun die M&ouml;glichkeit, f&uuml;r jeden Schleifendurchgang einen Satz <a href="#variablen">Variablen</a> zu definieren (oder auch f&uuml;r alle auf einmal), bei denen man nat&uuml;rlich auch pr&uuml;fen kann, ob sie <a href="#bedingt">gesetzt</a> sind. Variablen f&uuml;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&uuml;r die Schleife.</p>
110
111 <pre class="code">
112 {LOOP Test}
113 {IF Test.Variable}
114 F&uuml;r diesen Schleifendurchgang wurde die Variable &quot;Variable&quot; gesetzt! Sie hat den Inhalt {Test.Variable}.
115 {ELSE}
116 Die Variable &quot;Variable&quot; wurde nicht gesetzt.
117 {ENDIF}
118 {ENDLOOP}
119 </pre>
120
121 <p><b>Vorsicht:</b> Es ist derzeit noch nicht m&ouml;glich, Schleifen ineinander zu verschachteln, d.h. in einer Schleife darf sich keine weitere Schleife befinden.</p>
122
123 <p class="upanddown"><a href="#top">Nach oben</a></p>
124
125 <h2><a name="includes" id="includes">Includes</a></h2>
126
127 <p>Mit Hilfe von <code>{INCLUDE}</code>-Anweisungen k&ouml;nnen Sie den Inhalt einer anderen Datei in die Template-Datei einf&uuml;gen. Das ist zum Beispiel f&uuml;r immer wiederkehrende Abschnitte sinnvoll, beispielsweise Kopf und Fu&szlig; einer HTML-Datei.</p>
128
129 <p>Um den Inhalt einer anderen Datei in die Template-Datei in die Template einzuf&uuml;gen, geben Sie einfach an der entsprechenden Stelle diese Anweisung an:</p>
130
131 <pre class="code">
132 {INCLUDE Dateiname}
133 </pre>
134
135 <p>Wenn der Dateiname Leerzeichen oder das }-Zeichen enth&auml;lt, so m&uuml;ssen Sie den Dateinamen in doppelte Anf&uuml;hrungszeichen setzen:</p>
136
137 <pre class="code">
138 {INCLUDE &quot;Andere Datei&quot;}
139 </pre>
140
141 <p>Wenn Sie einen relativen Dateipfad angeben, so gilt dieser relativ zur Template-Datei. In &auml;lteren Versionen der Template-Klasse (Versionsnummer kleiner als 2.0) waren relative Pfade relativ zum Script.</p>
142
143 <p>Wenn sich in der einzubindenden Datei ebenfalls <code>{INCLUDE}</code>-Anweisungen befinden, so werden diese ebenfalls verarbeitet.</p>
144
145 <p class="upanddown"><a href="#top">Nach oben</a></p>
146
147 <h2><a name="trim" id="trim"><code>{TRIM}</code>-Bl&ouml;cke</a></h2>
148
149 <p>Sie k&ouml;nnen bestimmte Abschnitte in <code>{TRIM}</code>...<code>{ENDTRIM}</code>-Bl&ouml;cke einschlie&szlig;en. Beim Parsen der Template-Datei werden bei den Bl&ouml;cken voran- oder nachgestellte Leerzeichen, Zeilenumbr&uuml;che (LF, CR, CRLF) und Tabulatoren entfernt, so als w&uuml;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&auml;ren Ausdr&uuml;cken erreicht).</p>
150
151 <p>Sinnvoll k&ouml;nnen die <code>{TRIM}</code>-Bl&ouml;cke zum Beispiel sein, wenn Sie in der Template-Datei viele Variablen definieren und nicht m&ouml;chten, dass nach dem Auslesen &uuml;berfl&uuml;ssige Leerzeichen &uuml;brigbleiben:</p>
152
153 <pre class="code">
154 {TRIM}
155 {DEFINE name &quot;Homer Simpson&quot;}
156 {DEFINE email &quot;homer.simpson@example.org&quot;}
157 {ENDTRIM}
158 </pre>
159
160 <p>Ohne den <code>{TRIM}</code>-Block w&uuml;rden hier sinnlose Leerzeilen stehenbleiben.</p>
161
162 <hr width="80%" noshade="noshade" />
163
164 <p><a href="index.htm">Zur &Uuml;bersicht</a></p>
165
166 <hr width="80%" noshade="noshade" />
167
168 <p style="font-size:8pt">&copy;&nbsp;2002-2011 Patrick Canterino</p>
169
170 <table border="0" cellspacing="0" style="font-size:8pt">
171 <tr>
172 <td>Homepage:</td>
173 <td><a href="http://www.patshaping.de/">http://www.patshaping.de/</a></td>
174 </tr>
175 <tr>
176 <td><a name="bottom" id="bottom">E-Mail:</a></td>
177 <td><a href="mailto:patrick@patshaping.de">patrick@patshaping.de</a></td>
178 </tr>
179 </table>
180 </body>
181 </html>

patrick-canterino.de