|
|
(17 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | = Smarty die PHP Template Engine =
| + | Has been moved to: http://blog.kr8.de/wiki-smarty/ |
− | 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
| |
− | <br />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:
| |
− | * http://smarty.kr8.de/index.php
| |
− | * http://smarty.kr8.de/humor.php
| |
− | * http://smarty.kr8.de/methods.php
| |
− | ''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.:<br />
| |
− | '''cd \var\www\www.kr8.de\smarty'''
| |
− | <pre>
| |
− | \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
| |
− | </pre>
| |
− | 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|FTP-Client]] werden diese statischen HTML-Seiten nun zum WebProvider hochgeladen und können dort öffentlich betrachtet werden. Zum Beispiel:
| |
− | * http://www.kr8.de/index.htm
| |
− | * http://www.kr8.de/humor.htm
| |
− | * http://www.kr8.de/methods.htm
| |
− | | |
− | === 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|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:
| |
− | <pre>
| |
− | 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
| |
− | </pre>
| |
− | | |
− | ===03.04.2004 Menü-Ausprägungen für '''alle''' Seiten ausgelagert in INC-Dateien "menu_xyz.inc" ===
| |
− | | |
− | ===03.04.2004 Datum der letzen Änderung wird mithilfe eines Smarty-Plugins übernommen ===
| |
− | ==== FileMtime Plugin (Plugin-Ordner: d:\php\smarty\plugins) ====
| |
− | <pre>
| |
− | <?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;
| |
− | }
| |
− | ?>
| |
− | </pre>
| |
− | ==== Einsatz des Plugins in der Smarty-Template ====
| |
− | <pre>
| |
− | <address>Dietrich Kracht. Copyright © 2004. All rights reserved. Page last modified: {filemtime file="$Article"}
| |
− | </address>
| |
− | </pre>
| |
− | ---------------
| |
− | | |
− | -- Main.DietrichKracht - 25 Mar 2004
| |