vLIB Einführung

vLIB Logo

2. Erstes Beispiel mit zwei Templatevariablen

Unser erstes Beispiel zeigt ein einfaches PHP-Skript und das dazugehörige Template.

PHP-Skript
   require_once 'vlib/vlibTemplate.php';

   $tmpl = new vlibTemplate('tmpl/basic.htm');

   $tmpl->setvar('title_text', 'TITLE: This is the vLIB basic example ...');
   $tmpl->setvar('body_text', 'BODY: This is the message set using setvar()');

   $tmpl->pparse();

Dieses Beispiel zeigt die Grundstruktur von Templating: Im PHP-Code steht kein einziger HTML-Befehl. Richtlinie: Im PHP-Code am besten keine HTML-Tags verwenden.

require_once 'vlib/vlibTemplate.php';
Um mit vlibTemplate arbeiten zu können muss die Klasse als erstes inkludiert werden. "Inkludieren" ist ein umgangsprachlicher Programmierbegriff, der im Zusammenhang mit der PHP-Funktion "include" verwendet wird. Man kann man mit dem Befehl include() inkludieren oder mit require(). Ich bevorzuge require_once() da jedes benötigte Skript nur einmal inkludiert wird und require_once() einen FATAL ERROR liefert, wenn die Datei nicht gefunden wird. Erst nach dem require_once() sind die vlibTemplate-Methoden dem Skript bekannt.
$tmpl = new vlibTemplate('tmpl/basic.htm');
Es wird die Instanz $tmpl der Klasse vlibTemplate generiert. Damit kann jetzt die Methode "setVar" über die Instanz $tmpl angesprochen werden.
In der Datei "tmpl/basic.htm" sind die ganzen HTML-Tags hinterlegt (siehe unten), die für die Aufbereitung der Seite gebraucht werden.
$tmpl->setvar('title_text', 'TITLE: This is the vLIB basic example ...');
Der Templatevariablen "title_text" wird ein beliebiger Text zugewiesen. Dieser wird nach erfolgreichem Abarbeiten des Skriptes in der Titelzeile zu sehen sein. Dieses gilt ebenfalls für "body_text".
Hinweis: Sollte in diesem Text ein HTML-Tag verwendet werden, so wird dieser NICHT ausgewertet. Dazu aber später mehr ...
$tmpl->pparse();
Diese Methode sorgt dafür, dass die im PHP-Skript definierten Inhalte an das Template "geparst" werden. Das heißt, die Templatevariablen werden mit Inhalten gefüllt. Danach wird das Template angezeigt. Dies ist also in vielen Fällen der abschließende Befehl des PHP-Skripts. Danach sollte zumindest keine Ausgabe mehr per echo() oder print() erfolgen.
Template
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
   <html>
   <head>
      <title>{tmpl_var name='title_text'}</title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
   </head>

   <body>

   <p>{tmpl_var name='body_text'}</p>

   </body>
   </html>

In der Templatedatei ("tmpl/basic.htm") sind zwei Platzhalter bzw. zwei Templatevariablen hinterlegt. Der Aufruf "$tmpl->pparse();" füllt die beiden Templatevariablen mit den zuvor definierten Inhalten und zeigt das Ergebnis im Browser an.

Manchmal wird es nötig sein, Zellen auszugeben, die HTML-Tags enthalten. Zum Beispiel wenn Datenbank Einträge mit nl2br($db_eintrag) abgespeichert wurden. In dem Fall setzt man im Template nicht:
<td valign="top">{tmpl_var name='db_eintrag'}</td>
sondern
<td valign="top">{tmpl_var name='db_eintrag' escape='none'}</td>

Für das Attribut "escape" gibt es neben "none" noch andere Werte bzw. Einstellmöglichkeiten. Wie oben erwähnt bewirkt "none" bei diesem Beispiel, dass alle von nl2br() erzeugten HTML-Tags geparst werden. Würde man nicht "none" sondern "html" übergeben, dann würden alle eckigen Klammern durch die HTML-Sonderzeichen "&lt;" und "&gt;" ersetzt. Man kann diesen Parameter auch generell in der "vlibIni.php" setzen. Weitere Hinweise kann man im Forum finden.