Smarty
Contents
- 1 Smarty die PHP Template Engine
- 1.1 Meine Smarty-Installation
- 1.2 Konfiguration
- 1.3 Meine Website mit Smarty
- 1.3.1 Die Template-Parameter
- 1.3.2 Welche Templates verwende ich?
- 1.3.3 Textbausteine
- 1.3.4 Die dynamische Website
- 1.3.5 Die statische Website
- 1.3.6 Upload der statischen Seiten zum Web-Provider
- 1.3.7 Selektives Generieren der statischen HTML-Seiten mit einem Makefile
- 1.3.8 03.04.2004 Menü-Ausprägungen für alle Seiten ausgelagert in INC-Dateien "menu_xyz.inc"
- 1.3.9 03.04.2004 Datum der letzen Änderung wird mithilfe eines Smarty-Plugins übernommen
Smarty die PHP Template Engine
Smarty ist eine in PHP realisierte Template Engine für die Entwicklung zun Pflege von Websites (siehe: WebAuthoring).
Damit wird der Inhalt der Webseiten getrennt von der Darstellung ("Präsentation") gehalten und dadurch eine bessere Verwaltung (Site Management) möglich. Smarty erfreut sich einer sehr grossen Community. Der ursprüngliche Entwickler ist Andrei Zmievski. Infos gibt es bei http://smarty.php.net
Die Template-Engine patTemplate (http://www.php-tools.net) wird für den 2003 neu gestalteten Web-Auftritt (Portal) von 1und1.com verwendet.
Meine Smarty-Installation
- Definitive Software Library ID: Smarty
- Version: 2.4.2 (vom 11.02.2003)
- Bezugsquelle: Freshmeat http://freshmeat.net/projects/smarty/ http://smarty.php.net/
- Installationsdatum: 11.05.2003
- Plattform: Entwicklungssystem (Notebook)
- Installations-Ordner: d:\php\smarty\....
- Plugin-Ordner: d:\php\smarty\plugins
- Systemvoraussetzungen: PHP
Konfiguration
- In D:\php\smarty\Smarty.class.php sind festverdrahtete Pfade
- In D:\php\smarty\plugins\function.filemtime.php ist ein festverdrahteter Pfad
- In der PHP-Konfigurationsdatei C:\Windows\PHP.INI wird der include_path wie folgt ergänzt: include_path = ".;d:\php\pear;d:\php\smarty;.\templates;.\plugins;.\include"
Meine Website mit Smarty
Für meine WebsiteTraditionell setze ich Smarty ein. Da ich beim WebProvider-Provider keine PHP-Unterstützung habe, setzte ich Smarty auf meinem Entwicklungssystem (Notebook) ein und erzeuge daraus statische HTML-Seiten, die ich von Zeit zu Zeit hochlade.
Die Smarty-Dateien meiner Website liegen auf meinem Entwicklungsrechner (Notebook) in: d:\home\kracht\www\www.smarty.kr8.de
Für jede Web-Seite befindet sich dort eine kleine PHP-Datei (z.B. index.php, humor.php, methods.php), in der die Template-Parameter gesetzt werden und die Template dann aufgerufen wird.
Die Template-Parameter
Diese Template-Parameter sind:
- Diverse Parameter (Titel, Autor, Datum, Symbol, Banner,...)
- Article: Aufruf des eigentlichen Textbausteins (z.B. "humor.inc")
- Menu: Ein Array, das die zu generierende Menüleiste definiert.
Als letzte Zeile erfolgt der Aufruf der Template, das ist standardmässig krachtweb.tpl.
Welche Templates verwende ich?
- krachtweb.tpl: Mein Standard
- krachtweb_popup.tpl: Für die kleinen Popup-Seiten (z.B. im Bereich "Ostern")
- krachtweb_print.tpl: Zur Erzeugung "druckerfreundlicher Varianten" einer Seite (z.B. beim CV)
- krachtweb_tree.tpl: Für Seiten mit spezieller Tree-Navigation (z.B. im Bereich "Ostern")
Die Templates befinden sich in e:\var\www\www.kr8.de\smarty\templates
Textbausteine
Die Textbausteine sind Dateien, die ein HTML-Fragment mit dem eigentlichen Text enthalten (z.B. "humor.inc") und befinden sich in e:\var\www\www.kr8.de\smarty\templates.
Die dynamische Website
Damit sind wir fertig. Die dynamische Website kann nun (auf dem Entwicklungssystem) betrachtet werden. Zum Beispiel:
Leider besteht auf diese Seiten kein Zugriff vom Internet aus.
Die statische Website
Zur Generierung der statischen HTML-Seiten wird der PHP Command Line Interpreter "CLI" verwendet. Z.B.:
cd \var\www\www.kr8.de\smarty
\php\cli\php -f index.php > \var\www\www.kr8.de\htdocs\index.htm \php\cli\php -f humor.php > \var\www\www.kr8.de\htdocs\humor.htm \php\cli\php -f methods.php > \var\www\www.kr8.de\htdocs\methods.htm
Die so erzeugten statischen HTML-Seiten werden in \var\www\www.kr8.de\htdocs abgelegt und können dort zur Kontrolle betrachtet werden. Zum Beispiel:
- http://krachtweb.kr8.de/index.htm
- http://krachtweb.kr8.de/humor.htm
- http://krachtweb.kr8.de/methods.htm
Leider besteht auf diese Seiten kein Zugriff vom Internet aus.
Upload der statischen Seiten zum Web-Provider
Mit einem FTP-Client werden diese statischen HTML-Seiten nun zum WebProvider hochgeladen und können dort öffentlich betrachtet werden. Zum Beispiel:
Selektives Generieren der statischen HTML-Seiten mit einem Makefile
Das Generieren aller ca. 120 statischen HTML-Seiten dauert etwas lange. Wenn man jeweils nur das neu generiert, was von Änderungen betroffen war, geht es viel schneller. Dazu verwende ich das bewährte Unix-BuildTool Make.
Das produktive Makefile für meine Website ist:
- Makefile: D:\home\kracht\www\www.kr8.de\htdocs\makefile
Das Generieren der statischen HTML-Seiten geschiet durch eine Aufruf der Progamms Make durch ein BAT-File:
- BAT-File: D:\home\kracht\www\www.kr8.de\htdocs\makeweb.bat
Der prinzipielle Aufbau meines Makefiles ist wie folgt:
TEMPL = /var/www/www.kr8.de/smarty/templates/ PHP = /var/www/www.kr8.de/smarty # first target is the default target of the make command all: krachtweb krachtweb: index.htm humor.htm methods.htm index.htm: ${TEMPL}index.inc ${PHP}index.php ${TEMPL}krachtweb.tpl \php\cli\php -f ${PHP}index.php > index.htm humor.htm: ${TEMPL}humor.inc ${PHP}humor.php ${PHP}menu_freizeit.inc ${TEMPL}krachtweb.tpl \php\cli\php -f ${PHP}humor.php > humor.htm methods.htm: ${TEMPL}methods.inc ${PHP}methods.php ${PHP}menu_humor.inc ${TEMPL}krachtweb.tpl \php\cli\php -f ${PHP}methods.php > methods.htm
03.04.2004 Datum der letzen Änderung wird mithilfe eines Smarty-Plugins übernommen
FileMtime Plugin (Plugin-Ordner: d:\php\smarty\plugins)
<?php /* * Smarty plugin * ------------------------------------------------------------- * Type: function * Name: filemtime * Purpose: get the lastmodified date and time from a file * * Example: {filemtime file='hugo.inc'} * ------------------------------------------------------------- */ function smarty_function_filemtime($params, &$this) { extract($params); if (!isset($file)) { $this->trigger_error("filemtime: missing 'file' parameter"); return; } if($file == '') { return; } $file = "d:/home/kracht/www/smarty.kr8.de/templates/" . $file; $html = date('Y-m-d H:i:s', filemtime($file)); return $html; } ?>
Einsatz des Plugins in der Smarty-Template
<address>Dietrich Kracht. Copyright © 2004. All rights reserved. Page last modified: {filemtime file="$Article"} </address>
-- Main.DietrichKracht - 25 Mar 2004