Erstmal ist es wichtig, die Klasse in Ihre Scripts einzubinden:
# PHP: include("class.Template.php"); # Perl: use Template; # Python: import template
Ggf. müssen Sie andere Pfade angeben, oder in Perl zunächst mit use lib
einen weiteren Pfad für Perl-Module hinzufügen. Andererseits können Sie die Klassen auch direkt in Ihre Scripts einbetten.
Nun müssen Sie ein neues Objekt der Klasse anlegen:
# PHP / Perl: $tpl = new Template; # Python: tpl = template.Template()
Dadurch stellt die Variable $tpl
bzw. tpl
ein neues Objekt der Template-Klasse dar (wird in den nachfolgenden Beispielen auch verwendet). Über das Objekt können Sie auf die verschiedenen Methoden der Klasse zugreifen.
Das Wichtigste ist, erstmal eine Datei einzulesen. Das geschieht über die Methode read_file()
:
# PHP / Perl: $tpl->read_file(Datei); # Python: tpl.read_file(Datei)
Dadurch wird die angegebene Datei eingelesen und die {INCLUDE}
-Anweisungen verarbeitet. Der Inhalt der Datei wird anschließend in den Objekteigenschaften gespeichert.
Es ist auch möglich, den Vorlagentext direkt einzugeben. Das können Sie mit Hilfe der Methoden set_template()
und add_text()
erreichen. Das einzige Argument dieser Funktionen, ist der Text, der in den Objeteigenschaften gespeichert werden soll. set_template()
legt den kompletten Vorlagentext fest, add_text()
hängt den Text nur an (read_file()
verwendet diese Methode intern auch). {INCLUDE}
-Anweisungen werden hierbei allerdings nicht verarbeitet, Sie können dies jedoch manuell durch Aufruf der Methode parse_includes()
durchführen.
Eines der wichtigsten Merkmale von Templates ist die Tatsache, dass bestimmte Abschnitte variabel sind, d.h. hier werden Daten vom Script eingefüllt. Für diese Klasse werden die variablen Abschnitte von geschweiften Klammern umschlossen. Eine Variable kann zum Beispiel so aussehen:
{VARIABLE}
Um für eine Variable einen Wert festzulegen, können Sie ganz einfach die Methode set_var()
verwenden:
# PHP / Perl: $tpl->set_var(Variablenname,Wert); # Python: tpl.set_var(Variablenname,Wert)
Bei den Variablen wird zwischen Groß- und Kleinschreibung unterschieden. Die Variable variable
ist also eine andere als VARIABLE
.
Sie können als Variable auch ein Array angeben, dieses wird dann ganz einfach zusammengefügt.
Auf den Inhalt einer Variable können Sie jederzeit mit der Methode get_var()
zugreifen. Wenn die Variable nicht existiert, wird false
zurückgegeben. Wenn Sie beim Aufruf von get_var()
überhaupt keinen Variablennamen angeben, wird ein Array mit den Namen sämtlicher definierten Variablen zurückgegeben.
Bei Schleifen haben Sie die Möglichkeit, entweder für jeden Abschnitt die Daten einzeln oder alle Daten auf einmal hinzuzufügen.
Dazu stehen Ihnen die Methoden add_loop_data()
und set_loop_data()
zur Verfügung (erstere fügt neue Daten hinzu, letztere setzt die Daten komplett). Beide Methoden verwenden dasselbe Schema. Als erster Parameter kommt der Name der Schleife, dann der Datensatz bzw. alle Daten. Der Datensatz besteht aus einem assoziativen Array bzw. Hash-Referenz bzw. Dictionary, bei dem die Schlüssel den Namen der Variablen und der Wert eben den Wert der Variablen darstellen. Bei set_loop_data()
müssen Sie die Datensätze als ein Array bzw. Array-Referenz bzw. Liste von Datensätzen übergeben.
Beispiel für add_loop_data()
:
# PHP: $tpl->add_loop_data('Test-Schleife',array('name' => 'Bart Simpson', 'email' => 'el-barto@example.org')); $tpl->add_loop_data('Test-Schleife',array('name' => 'Homer Simpson', 'email' => 'homer.simpson@example.org')); # Perl: $tpl->add_loop_data('Test-Schleife',{'name' => 'Bart Simpson', 'email' => 'el-barto@example.org'}); $tpl->add_loop_data('Test-Schleife',{'name' => 'Homer Simpson', 'email' => 'homer.simpson@example.org'}); # Python: tpl.add_loop_data('Test-Schleife',{'name': 'Bart Simpson', 'email': 'el-barto@example.org'}) tpl.add_loop_data('Test-Schleife',{'name': 'Homer Simpson', 'email': 'homer.simpson@example.org'})
Beispiel für set_loop_data()
:
# PHP: $tpl->set_loop_data('Test-Schleife',array(array('name' => 'Bart Simpson', 'email' => 'el-barto@example.org'), array('name' => 'Homer Simpson', 'email' => 'homer.simpson@example.org'))); # Perl: $tpl->set_loop_data('Test-Schleife',[{'name' => 'Bart Simpson', 'email' => 'el-barto@example.org'}, {'name' => 'Homer Simpson', 'email' => 'homer.simpson@example.org'}]); # Python: tpl.set_loop_data('Test-Schleife',[{'name': 'Bart Simpson', 'email': 'el-barto@example.org'}, {'name': 'Homer Simpson', 'email': 'homer.simpson@example.org'}])
Wenn Sie alle Variablen und Schleifen-Daten gesetzt haben, ist es an der Zeit, diese Daten auch auf die Template-Datei anzuwenden. Dies geschieht mit Hilfe der Methode parse()
:
# PHP / Perl: $tpl->parse(); # Python: tpl.parse()
Dadurch werden alle Variablen durch Text ersetzt, bedingte Blöcke und Schleifen verarbeitet und in der Template-Datei definierte Variablen ausgelesen und auf die Template-Datei angewendet.
Zu guter letzt können Sie noch die verarbeiteten Daten zurückgeben lassen:
# PHP / Perl: $template = $tpl->get_template(); # Python: template = tpl.get_template()
Dadurch enthält die Variable $template
bzw. template
die nun verarbeitete Template-Datei (sie können get_template()
übrigens jederzeit verwenden, um an den Vorlagentext heranzukommen).
Weiterhin können Sie den kompletten Vorlagentext auch in eine Datei schreiben. Diese muss allerdings bereits geöffnet sein. Verwenden Sie dazu die Methode to_file()
und geben Sie als Parameter das Handle der geöffneten Datei an.
# PHP: $handle = fopen("datei.htm","w"); $tpl->to_file($handle); fclose($handle); # Perl: open(HANDLE,">datei.htm"); $tpl->to_file(\*HANDLE); close(HANDLE); # Python: handle = open("datei.htm","w") tpl.to_file(handle) handle.close()
Achtung:
Mit Version 2.5 der Template-Klasse hat sich der komplette Vorgang des Parsens verändert. Falls Sie merken, dass sich dadurch das Ergebnis des endgütigen Textes von dem, was Sie gewohnt sind, unterscheidet, können Sie wieder auf den alten Parsing-Vorgang umschalten. Fügen Sie dazu irgendwo vor dem Aufruf von parse()
folgende Zeile ein:
# PHP: $tpl->old_parsing = 1; # Perl: $tpl->{'old_parsing'} = 1; # Python: tpl.old_parsing = 1
Durch diese Anweisung aktivieren Sie den alten Parsing-Mechanismus. Wenn Sie zu dieser Maßnahme greifen müssen (was ich natürlich nicht hoffe), würde ich mich freuen, wenn Sie mir eine kurze Mail schicken, damit wir uns dieses Problem evtl. gemeinsam mal ansehen können.
Falls Sie den Template-Text wieder in den Zustand zurückversetzen möchten, den er direkt nach dem Einlesen der Template-Datei hatte, müssen Sie diese nicht wieder neu einlesen. Sie können ganz einfach die Methode reset()
verwenden:
# PHP / Perl: $tpl->reset() # Python: tpl.reset()
Umgekehrt können Sie den aktuellen Status des Template-Textes auch sichern, um später diesen Status wiederherstellen zu können. Dies geschieht mit der Methode save_state()
:
# PHP / Perl: $tpl->save_state() # Python: tpl.save_state()
Dadurch können Sie diesen Status mit reset()
wiederherstellen. Es ist dadurch allerdings nicht mehr möglich den Zustand, den der Template-Text direkt nach dem Einlesen hatte, wiederherzustellen.
© 2002-2011 Patrick Canterino
Homepage: | http://www.patshaping.de/ |
E-Mail: | patrick@patshaping.de |