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>Templatates
"von Hand
" parsen
</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">Templatates
"von Hand
" parsen
</a></h1>
16 <p>Neben den herk
ömmlichen Methoden, die die Template-Dateien weitgehend automatisch verarbeiten, haben Sie auch die M
öglichkeit, die Template-Dateien sozusagen
"von Hand
" zu verarbeiten. Sie haben hierbei genaue Kontrolle
über die zu ersetzenden Variablen, die zu verarbeitenden
<code>{IF}
</code>-Bl
öcke usw.
</p>
18 <p>Um eine
<a href=
"aufbau.htm#variablen">Variable
</a> sofort durch Text zu ersetzen, k
önnen Sie die Methode
<code>fillin()
</code> verwenden:
</p>
23 $tpl-
>fillin(Variablenname,Wert);
27 tpl.fillin(Variablenname,Wert)
30 <p>Sie haben weiterhin die M
öglichkeit, mit Hilfe der Methode
<code>fillin_array()
</code> eine Variable durch ein Array zu ersetzen (unter Perl k
önnen Sie eine Array-Referenz verwenden). Dabei werden die einzelnen Array-Elemente zusammengef
ügt. Die Syntax dieser Methode entspricht der von
<code>fillin()
</code>, Sie k
önnen als optionalen dritten Parameter die Zeichenkette angeben, mit der die Array-Elemente verbunden werden sollen (die Vorgabe ist eine leere Zeichenkette, also
<code>''
</code>).
</p>
32 <p>Wenn Sie die Variablen mit
<code>set_var()
</code> definiert haben und diese im Template-Text nun nacheinander durch die definierten Werte ersetzen m
öchten, so wie es ein Aufruf von
<code>parse()
</code> tut, k
önnen Sie die Methode
<code>replace_vars()
</code> verwenden:
</p>
37 $tpl-
>replace_vars();
44 <p>Optional k
önnen Sie hier noch ein Array als Parameter mitgeben, das die Variablen, die ersetzt werden sollen, einschr
änkt. Wird ein Array mitgegeben, werden nur die Variablen ersetzt, deren Namen sich in diesem Array befinden.
</p>
46 <p>Genauso k
önnen Sie auch mit den
<a href=
"aufbau.htm#bedingt"><code>{IF}
</code>-Bl
öcken
</a> verfahren:
</p>
51 $tpl-
>parse_if_block(Name,Bedingung);
55 tpl.parse_if_block(Name,Bedingung)
58 <p>Verneinte Bl
öcke werden automatisch verarbeitet. Wenn Sie den optionalen dritten Parameter von
<code>parse_if_block()
</code> auf
<i>true
</i> setzen, werden diese Bl
öcke nicht verarbeitet.
</p>
60 <p>Falls Sie die Verarbeitung einer
<a href=
"aufbau.htm#schleifen">Schleife
</a> von Hand ansto
ßen m
öchten, k
önnen Sie die Methode
<code>parse_loop()
</code> verwenden:
</p>
65 $tpl-
>parse_loop(Name der Schleife);
69 tpl.parse_loop(Name der Schleife)
72 <p>Die Daten f
ür die Schleifen werden allerdings weiterhin durch
<a href=
"parsen.htm#schleifen-setzen"><code>add_loop_data()
</code> und
<code>set_loop_data()
</code></a> eingef
ügt.
</p>
74 <p>Um die mit Hilfe von
<a href=
"aufbau.htm#definitionen"><code>{DEFINE}
</code>-Anweisungen
</a> definierten Variablen auszulesen, k
önnen Sie die Methode
<code>get_defined_vars()
</code> verwenden:
</p>
79 $tpl-
>get_defined_vars();
83 tpl.get_defined_vars()
86 <p>Dadurch werden die Variablen ausgelesen und in den Objekt-Eigenschaften abgespeichert, so als w
ären sie mit
<a href=
"parsen.htm#variablen-setzen"><code>set_var()
</code></a> gesetzt worden. Sie K
önnen Sie dann mit
<code>get_var()
</code> wieder auslesen. Die Namen aller Variablen, die in der Template-Datei definiert wurden, befinden sich in den Objekt-Eigenscaften im Array mit dem Namen
<code>defined_vars
</code> (unter Perl handelt es sich um eine Array-Referenz).
</p>
88 <p><a href=
"aufbau.htm#includes"><code>{INCLUDE}
</code>-Anweisungen
</a> k
önnen, wie bereits erw
ähnt, von
<code>parse_includes()
</code> verarbeitet werden:
</p>
93 $tpl-
>parse_includes();
100 <p>Falls Sie die
<a href=
"aufbau.htm#trim"><code>{TRIM}
</code>-Anweisungen
</a> manuell verarbeiten lassen m
öchten, steht die Methode
<code>parse_trim_blocks
</code> zur Verf
ügung:
</p>
105 $tpl-
>parse_trim_blocks();
109 tpl.parse_trim_blocks()
112 <p>Zus
ätzlich zu den normalen
<code>{IF}
</code>-Bl
öcken steht noch eine
ältere Variante zur Verf
ügung. Diese soll eigentlich nicht mehr verwendet werden, da sie nicht soviele M
öglichkeiten bietet und gerade bei HTML-Dokumenten f
ür Un
übersicht sorgen kann. Der Vollst
ändigkeit halber f
ühre ich sie aber trotzdem hier auf, zumal sie vielleicht n
ützlich sein kann, sollte der Parser für die normalen
<code>{IF}
</code>-Bl
öcke einen Bug aufweisen, die bei dieser alten Methode nicht auftritt.
</p>
114 <p>Konkret werden bei dieser Variante bedingte Bl
öcke von HTML-Tags mit frei w
ählbaren Namen (eigentlich wohl eher XML, die ganzen Freaks werden mich jetzt ganz sicher verpr
ügeln...) umschlossen -
die Variante tr
ägt deswegen auch den Namen
"CondTag
".
<br />
115 Das kann zum Beispiel so aussehen:
</p>
118 <Name
>Das ist ein bedingter Abschnitt!
</Name
>
121 <p>Auch hier ist es m
öglich, mehrere Bl
öcke ineinander zu verschachteln. Allerdings darf ein CondTag-Block nicht einen weiteren CondTag-Block mit dem selben Namen enthalten, weil die Funktion ansonsten ins Schleudern ger
ät.
</p>
123 <p>Verarbeitet werden die Bl
öcke von der Funktion
<code>parse_condtag()
</code>:
</p>
128 $tpl-
>parse_condtag(Name,Bedingung);
132 tpl.parse_condtag(Name,Bedingung)
135 <hr width=
"80%" noshade=
"noshade" />
137 <p><a href=
"index.htm">Zur
Übersicht
</a></p>
139 <hr width=
"80%" noshade=
"noshade" />
141 <p style=
"font-size:8pt">© 2002-
2011 Patrick Canterino
</p>
143 <table border=
"0" cellspacing=
"0" style=
"font-size:8pt">
146 <td><a href=
"http://www.patshaping.de/">http://www.patshaping.de/
</a></td>
149 <td><a name=
"bottom" id=
"bottom">E-Mail:
</a></td>
150 <td><a href=
"mailto:patrick@patshaping.de">patrick@patshaping.de
</a></td>