PHP: Einfache Templates mit MiniTemplator

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/

leave your comment


*

Unterstütze den Frickelblog!