Dokumentation für SKOR PHP Template

Voraussetzungen

  • Webserver z.B. Apache und PHP 5
  • PHP Unterstützung für Ausgabepufferung (Grundbestand von PHP)
  • SKOR Template Klasse
  • SKOR Section Klasse (optional)

Installation

Laden Sie sich die Klassen hier herunter und entpacken Sie diese in Ihrem include Verzeichnis Ihres Servers oder in dem Verzeichnis, in dem sich Ihr PHP Skript befindet.

Erste Schritte

Erstellen Sie sich folgende einfache Templatedatei und speichern Sie diese als z.B. "template.tpl".

<html>
<body>
<h1>Ich sage: {UNIVERSE}</h1>
</body>
</html>

Mit diesem Template haben wir den Platzhalter "{UNIVERSE}" definiert.

Nun erstellen Sie im gleichen Verzeichnis folgende PHP-Datei und speichern Sie unter z.B. test.php ab.

<?php
require_once('class_template.php');
$tpl = new template();
$tpl ->dir = '';
$tpl->html = 'template.tpl';
$tpl->read();
$tpl->assign('UNIVERSE', 'Hallo Welt');
$tpl->display();
?>

Nach dem Einlesen der class_template.php erzeugen wir zuerst eine Instanz mit dem Namen "$tpl".
Die Eigenschaft "dir" für das Verzeichnis lassen wir leer, da Template und Script im gleichen Verzeichnis liegen.  Möchten Sie schon bei den Tests ein anderes Verzeichnis benutzen, tragen Sie dies hier relativ zum Script ein (z.B. "../include/template/").
Anschließend "sagen" wir der Klasse, welches Template sie benutzen soll.

"$tpl->read()" veranlasst die Klasse das Template zu lesen und eine Liste der darin enthaltenen Platzhaltern zu erstellen. So wird aus dem  Platzhalter "{UNIVERSE}" der Templatedatei nun die Variable 'UNIVERSE', der jetzt über die Methode "assign()" der Wert "Hallo Welt" zugewiesen wird.

Es erfolgt die Ausgabe des Templates mit "display()".

Wenn Sie die Seite test.php aufrufen, sollten Sie also eine HTML-Seite sehen, die Sie mit "Ich sage: Hallo Welt" begrüßt.

Sections

Ein etwas komplexers Template mit Verwendung der class_section:

<!--section-start::SITE-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="{LANG}" xml:lang="{LANG}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset={CHARSET}" />
<title>{TITLE}</title>
<style type="text/css">
<!--
body {font-family: Arial, sans-serif; font-size:100.01%}
table.noborder {border:none; border-collapse:collapse;}
table.noborder tr.row_even td {background-color:#DDD; border-top: 1px solid #999; border-bottom: 1px solid #999;}
table.noborder td {padding:2px 10px 2px 3px;}
table.noborder td.first {font-weight:bold;}
-->
</style>
</head>
<body>
<h1>{HEADER}</h1>
<p>{INTRO}</p>
{S_TABLE}
</body>
</html>
<!--section-end::SITE-->

<!--section-start::TABLE-->
<table class="noborder">
{S_TABLE_ROW}
</table>
<!--section-end::TABLE-->

<!--section-start::TABLE_ROW-->
<tr class="row_{ODD}">
<td class="first">{POSITION}</td><td>{VORNAME} {NAME}</td><td>{TEL}</td>
</tr>
<!--section-end::TABLE_ROW-->

 

Das dazugehörige PHP-Skript:

<?php
require_once('class_template.php');
require_once('class_section.php');

$data = array ();
$data[] = array('vorname'=>'Franz','name'=>'Gumper','position'=>'Vorstand', 'tel'=>'05511 123 456-789');
$data[] = array('vorname'=>'Georg','name'=>'Bumpel','position'=>'Vorstand', 'tel'=>'03311 123 456-789');
$data[] = array('vorname'=>'Hans','name'=>'Hauer','position'=>'Vorstand', 'tel'=>'01155 123 456-789');

$tpl = new section();
$tpl ->dir = '';
$tpl->html = 'section.tpl';
$tpl->read();
$tpl->assign('LANG', 'de');
$tpl->assign('CHARSET', 'iso-8859-1');
$tpl->assign('TITLE', 'Test site: Section Test');
$tpl->assign('HEADER', 'Section Test');
$tpl->assign('INTRO', 'Just a little intro text ...');
$tmp = '';
for ( $i = 0; $i<sizeof($data); $i++) {
        $tpl->assign('POSITION', $data[$i]['position']);
        $tpl->assign('VORNAME', $data[$i]['vorname']);
        $tpl->assign('NAME', $data[$i]['name']);
        $tpl->assign('TEL', $data[$i]['tel']);
        $tpl->assign('ODD', (($i+1) % 2) ? 'odd' : 'even' );
        $tmp .= $tpl->fetch('TABLE_ROW');
}

$tpl->assign('S_TABLE_ROW', $tmp);
$tpl->assign('S_TABLE', $tpl->fetch('TABLE'));
$tpl->assign_section('SITE');
?>