vLIB Einführung

vLIB Logo

12. Modulares Programmieren mit TMPL_INCLUDE

Bei komplexen Designs bietet sich ein modularer Aufbau der Templates und der PHP-Skripte an. Dieses kann auf zwei Arten realisiert werden:

  1. Parameterübergabe für TMPL_INCLUDE
  2. einzelne PHP-Skripte, die jeweils ein Template haben

Welche der beiden Methoden besser ist, liegt im Auge des Betrachters. Ich persönlich bevorzuge Variante 2, weil sie die Modularisierung (Programmierlogik) in die Hände von PHP legt und nicht in die des Templates. Vielleicht ist das auch möglich mit Variante 1. Dennoch wird an dieser Stelle zuerst Variante 1 erklärt.

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

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

   $tmpl->setvar('header', 'modular_tmpl_include_header.htm');
   $tmpl->setvar('body', 'modular_tmpl_include_body.htm');
   $tmpl->setvar('title_text', 'TITLE: Modular programming with TMPL_INCLUDE');
   $tmpl->setvar('body_text', 'BODY: Modular programming with TMPL_INCLUDE');

   $tmpl->pparse();

Die Befehle sind alle bekannt. Mit den Tags <head></head> und <body></body> unterteilt HTML die Bereiche. Offensichtlich unterteilt unser PHP-Skript das Template ebenfalls in diese Bereiche. Was allerdings genau passiert wird erst durch das Template klar.

Template: modular_tmpl_include.htm
   <tmpl_include file='{var:header}'>
   <tmpl_include file='{var:body}'>

Wir haben im PHP-Skript die Variablen "header" und "body" gesetzt. Diese werden vom Template dann inkludiert. Somit ist auch eine komplexe Navigation über $_GET-Parameter oder aus einer Datenbank möglich.

Template: modular_tmpl_include_header.htm
   <!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>

Das Template ist mit dem ersten Beispiel in diesem Tutorial identisch. Nur ist hier der HEAD-Tag vom BODY-Tag getrennt bzw. in zwei verschiedenen Dateien untergebracht. Kompliziertere Strukturen sind natürlich auch denkbar.

Template: modular_tmpl_include_body.htm
   <body>

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

   </body>
   </html>