MiniTemplator ist eine Template-Klasse für PHP.
Mit Templates in PHP kann man den Quellcode von den HTML-Ausgaben trennen.
Dies macht es möglich das der HTML-Quellcode des Templates von einem Designer bearbeitet werden kann ohne das dieser Programmier-Kenntnisse haben muss.
Eine der vielen Template-Klassen möchte ich hier vorstellen.
Sie heißt MiniTemplator, ist 36Kb klein und steckt in einer einzigen PHP-Datei.
Wie Eingehend schon erwähnt, trennt man mit hilfe von Templates den Code des Programmierers mit dem Layout des Designers.
Deswegen brauchen wir für die Beispiele immer 3 Dateien:
- die template-Klasse „MiniTemplator.class.php“
- die PHP-Code Datei, z.B. „1.php“
- die HTML-Layout Datei, z.B. „1.htm“
Beispiel 1: Einfache Variablen übergeben
Im ersten beispiel wollen wir nur einfache Variablen übergeben.
Hierzu benutzen wir folgende HTML-Datei (1.htm):
1 2 3 4 5 6 7 8 9 10 | <html> <head> <title>${SeitenTitel}</title> </head> <body> <h3>${SeitenTitel}</h3> Datum: ${Datum}<br> Uhrzeit: ${Uhrzeit} </body> </html> |
Hier gibt es folgende 3 Platzhalter:
- ein Seiten-Titel: „${SeitenTitel}“
- ein Datum: „${Datum}“
- eine Uhrzeit: „${Uhrzeit}“
Diese Platzhalter wollen wir nun durch eine PHP-Datei füllen.
Dafür erstellen wir die passende Datei mit dem Namen „1.php“:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php require_once ("MiniTemplator.class.php"); // Neue template Instanz $template = new MiniTemplator; // Prüfung ob das Template vorhanden ist if (!$template->readTemplateFromFile("1.htm")) die ("MiniTemplator.readTemplateFromFile failed."); // Einfache Variablen setzen $template->setVariable ("SeitenTitel","MiniTemplator Demo 1"); $template->setVariable ("Datum",date("d.m.Y")); $template->setVariable ("Uhrzeit",date("H:i:s")); // Template ausgeben $template->generateOutput(); ?> |
Hier wird als erstes die Template-Klasse eingebunden.
Danach wird das Template versucht zu laden (1.htm) und im Fehlerfall eine Meldung ausgegeben.
Dann werden mit „$template->setVariable“ die 3 Variablen gesetzt und anschließend durch „$template->generateOutput()“ die Fertige HTML-Ausgabe mit ersetzen Platzhaltern im Browser ausgegeben.
Beispiel 2: Variablen in einer for-Schleife für eine Tabelle setzen
In diesem Beispiel soll eine Tabelle mit Zellen aus einer for-Schleife gefüllt werden.
Die HTML-Datei (2.htm):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <html> <head> <title>${SeitenTitel}</title> </head> <body> <h3>${SeitenTitel}</h3> Datum: ${Datum}<br> Uhrzeit: ${Uhrzeit} <table border="1" cellpadding="3" cellspacing="0"> <tr> <td bgcolor="#EEEEEE">Spalten-Überschrift</td> </tr> <!-- $BeginBlock tr --> <tr> <!-- $BeginBlock td --> <td>Inhalt: ${Inhalt}</td> <!-- $EndBlock td --> </tr> <!-- $EndBlock tr --> </table> </body> </html> |
Und passend dazu die PHP-Datei (2.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php require_once ("MiniTemplator.class.php"); // Neue template Instanz $template = new MiniTemplator; // Prüfung ob das Template vorhanden ist if (!$template->readTemplateFromFile("2.htm")) die ("MiniTemplator.readTemplateFromFile failed."); // Einfache Variablen setzen $template->setVariable ("SeitenTitel","MiniTemplator Demo 2"); $template->setVariable ("Datum",date("d.m.Y")); $template->setVariable ("Uhrzeit",date("H:i:s")); // Variablen in einer FOR schleife für eine Tabelle setzen for($i=1;$i<=10;$i++) { // Erst die Variebale setzen $template->setVariable ("Inhalt",$i); // dann einen neuen <td> Block einfügen $template->addBlock ("td"); // am ende einen neuen <tr> block einfügen $template->addBlock ("tr"); } // Template ausgeben $template->generateOutput(); ?> |
Beispiel 3: Variablen in einer for-Schleife für eine Tabelle setzen (mit zusätzlichen Spalten)
In diesem Beipsiel sollen zusätzlich zum obigen Beispiel nicht nur Zeilen, sondern auch Spalten angezeigt werden.
Die HTML-Datei (3.htm):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <html> <head> <title>${SeitenTitel}</title> </head> <body> <h3>${SeitenTitel}</h3> Datum: ${Datum}<br> Uhrzeit: ${Uhrzeit} <table border="1" cellpadding="3" cellspacing="0"> <tr> <td bgcolor="#EEEEEE">Zeile / Spalte</td> </tr> <!-- $BeginBlock tr --> <tr> <td>Zeile: ${Zeile}</td> <!-- $BeginBlock td --> <td> Z:${Zeile} / S:${Spalte} </td> <!-- $EndBlock td --> </tr> <!-- $EndBlock tr --> </table> </body> </html> |
Und die passende PHP-Datei dazu (3.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php require_once ("MiniTemplator.class.php"); // Neue template Instanz $template = new MiniTemplator; // Prüfung ob das Template vorhanden ist if (!$template->readTemplateFromFile("3.htm")) die ("MiniTemplator.readTemplateFromFile failed."); // Einfache Variablen setzen $template->setVariable ("SeitenTitel","MiniTemplator Demo 3"); $template->setVariable ("Datum",date("d.m.Y")); $template->setVariable ("Uhrzeit",date("H:i:s")); // Variablen in einer FOR schleife für eine Tabelle setzen for($i_zeile=1;$i_zeile<=20;$i_zeile++) { for($i_spalte=1;$i_spalte<=10;$i_spalte++) { // Erst die Variebale setzen $template->setVariable ("Zeile",$i_zeile); $template->setVariable ("Spalte",$i_spalte); // dann einen neuen <td> Block einfügen $template->addBlock ("td"); } // am ende einen neuen <tr> block einfügen $template->addBlock ("tr"); } // Template ausgeben $template->generateOutput(); ?> |
Die von mir benutzen Beispiel-Dateien könnt ihr unter folgendem Link herunter laden:
http://code.google.com/p/frickelblog/source/browse/trunk/samples/PHP/20110322_PHPMiniTemplator/
Login