Difference between revisions of "Smarty"

From Dietrich Blog (Strato)
Jump to: navigation, search
(Replaced content with "Has been moved to: http://blog.kr8.de/wiki-smarty/")
 
Line 1: Line 1:
--> blog.kr8.de
+
Has been moved to: http://blog.kr8.de/wiki-smarty/
{{TOCright}}
 
= 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:\bin\php\smarty\....
 
* Plugin-Ordner:  d:\bin\php\smarty\plugins
 
* Systemvoraussetzungen: [[PHP]]
 
 
 
== Konfiguration ==
 
* In D:\bin\php\smarty\Smarty.class.php sind '''festverdrahtete Pfade'''
 
* In D:\bin\php\smarty\plugins\function.filemtime.php ist ein '''festverdrahteter Pfad'''
 
* In der PHP-Konfigurationsdatei '''D:\bin\php\PHP.INI''' wird der '''include_path''' wie folgt ergänzt: include_path = ".;d:\bin\php\pear;d:\bin\php\smarty;.\templates;.\plugins;.\include"
 
 
 
----------------
 
 
 
== Meine Website mit Smarty ==
 
Für meine [[WebsiteTraditionell]] setze ich Smarty ein. Da ich beim [[WebProvider]] 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 (*.php) ===
 
Die Smarty-Dateien meiner Website liegen auf meinem Entwicklungsrechner (Notebook) in: '''d:\var\www\htdocs\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.
 
 
 
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 (*.tpl) 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 '''d:\var\www\htdoc\smarty.kr8.de\templates'''
 
 
 
=== Textbausteine (*.inc) ===
 
Die Textbausteine sind Dateien, die ein HTML-Fragment mit dem eigentlichen Text enthalten (z.B. "humor.inc") und befinden sich in '''d:\var\www\htdocs\smarty.kr8.de\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\htdocs\smarty.kr8.de'''
 
<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.graumann.kr8.de/index.htm
 
* http://krachtweb.graumann.kr8.de/humor.htm
 
* http://krachtweb.graumann.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:
 
* 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
 

Latest revision as of 14:47, 7 April 2020

Has been moved to: http://blog.kr8.de/wiki-smarty/