patTemplate Einführung

von Lorenz Aebi | 0 | 4570 Aufrufe

Anzeige Hier werben

Installation

Für die Installation braucht man patTemplate und patError diese können unter pear.php-tools.net heruntergeladen werden. Diese 2 Archive werden in den ./includes Ordner entpackt. Jetzt müssen nur noch die Templates und die Logik erstellt werden.

Die Bibliothek wird am einfachsten anhand einiger Beispielen erklärt.

Hallo Welt mit erster Variable

templates/main.tmpl  
HTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<patTemplate:tmpl name="main">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Hallo Welt</title>
    </head>
    <body>
    <p>Hallo Welt. Heute ist der {DATUM}.</p>
    </body>
    </html>
</patTemplate:tmpl>

{DATUM} ist die Variable die mit folgendem PHP-Code durch einen Text ersetzt wird.

index.php  
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// patTemplate Dateien einfuegen
include('./includes/patTemplate.php');
include('./includes/patErrorManager.php');

// patTemplate-Klasse initialisieren und ein Objekt erzeugen.
$tmpl = new patTemplate();

// Hauptverzeichnis der Templates.
$tmpl->setBasedir('templates'); 

//Haupttemplate laden.
$tmpl->readTemplatesFromFile('main.tmpl');

$datum = date("d.m.Y", time());
// Variable ersetzen.
$tmpl->addVar('main', 'DATUM', $datum);

// Template Parsen.
$tmpl->displayParsedTemplate("main");
?>

Jetzt sollte 'Hallo Welt. Heute ist der 23.08.2007' als Ausgabe erscheinen. Das Datum ist das heutige Datum.

Hallo Welt erweitert

Wir erweitern das Beispiel mit einer Fehlermeldung, wenn eine Variable übergeben wird. Mit diesem Codeschnippsel können einzelne Elemente einer Webseite ein-/ausgeschaltet werden.

templates/main.tmpl  
HTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<patTemplate:tmpl name="main">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Hallo Welt</title>
    </head>
    <body>  
    <patTemplate:tmpl name="warning" visibility="hidden">
        <p class="warning">Bitte keine Variablen übergeben!</p>
    </patTemplate:tmpl>
    <p>Hallo Welt. Heute ist der {DATUM}.</p>
    </body>
    </html>
</patTemplate:tmpl>

Das 'warning'-Template wird nur bei Bedarf angezeigt.

index.php  
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
//...

// Haupttemplate laden.
$tmpl->readTemplatesFromFile('main.tmpl');

if (count($_GET) > 0) { 
    // Warning Template anzeigen.   
    $tmpl->setAttribute('warning', 'visibility', 'visible');
}

$datum = date("d.m.Y", time());

// Variable ersetzen.
$tmpl->addVar('main', 'DATUM', $datum);
$tmpl->displayParsedTemplate("main");
?>

Statt das Warning Template direkt in das main.tmpl zu schreiben kann man es auch in eine neue Datei schreiben und mit folgendem Befehl in das Template einfügen:

 
HTML
1
<patTemplate:tmpl visibility="hidden" name="warning" src="./warning.tmpl" />

Das Template wird als hidden eingefügt. Damit es angezeigt werden kann muss es zuerst noch sichtbar gemacht werden. Natürlich kann das Element auch ohne dem Attribut visibility eingefügt werden, dann wird es Standardmässig angezeigt.

Die warning.tmpl sieht dann folgendermassen aus. Man könnte noch die <patTemplate>-Tags hinzufügen, in diesem Fall ist dies aber nicht nötig und macht nebenbei den Code auch schlanker.

warning.tmpl  
HTML
1
<p class="warning">Bitte keine Variablen &uuml;bergeben!</p>

Einfache Homepage mit patTemplates

Damit eine einfache Homepage mit einer switch-case Struktur erstellt werden kann, fehlt noch die Funktion je nach Unterseite verschiedene Templates zu laden. Dies geschieht folgendermassen:

templates/main.tmpl  
HTML
1
<patTemplate:tmpl name="content" autoload="off" src="" />

Dies wird an der Stelle eingefügt wo die Unterseite geladen werden soll. Das src Attribut wird je nach Bedarf gesetzt und lädt dann dieses Template.

 
PHP
1
2
$tmpl->setAttribute('content', 'src', './news.tmpl');
$tmpl->loadTemplate('content');

Mit diesen 2 Befehlen wird die news.tmpl geladen. Die news.tmpl könnte dann zum Beispiel folgendermassen aussehen:

templates/news.tmpl  
HTML
1
2
3
4
5
6
7
<patTemplate:tmpl name="news">
    <h2>News</h2>
    <patTemplate:tmpl name="newselement">
        <h3>{TITEL}</h3>
        <p class="news">{NEWS}</p>
    </patTemplate:tmpl>
</patTemplate:tmpl>

Jetzt kann die Newsseite mit PHP erzeugt werden. Das Template erstellt das Grundgerüst mit mehreren Newseinträgen. Falls die News und die Titel zu den News in zwei getrennten Arrays gespeichert sind, so könnte die Logik etwa so aussehen.

 
PHP
1
2
3
4
5
6
7
for ($i = 0; $i < $anzahlNewsEintraege; $i++) {
    // Variablen werden gesetzt.
    $tmpl->addVar("newselement", "TITEL", $news_titel[$i]);
    $tmpl->addVar("newselement", "NEWS", $news_text[$i]);
    // Ein Newselement wird geparsed und angefügt ('a')
    $tmpl->parseTemplate("newselement", "a");
}

Natürlich wird man, wenn man eine etwas grössere Seite hat die Werte aus einer Datenbank holen.

Mit diesen wenigen Template - Elemente können schon recht komplexe Seiten erstellt werden. Der Vorteil in den Template liegt darin, dass man das Design der Seite sehr rasch auswechseln kann. Der PHP-Code muss dabei nicht verändert werden.

Über den Autor: Lorenz Aebi
hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.
Profilseite betrachten