22
Seminar Internet-Technologie Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Embed Size (px)

Citation preview

Page 1: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Seminar Internet-TechnologieSeminar Internet-Technologie

Thema: Smarty Templates

Vortragender: Christian Voß

Datum: 11.01.2008

Page 2: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

InhaltInhalt

• Was ist Smarty

• Der Entwicklungsprozess

• Was Smarty bietet

• Smarty Projekte – Ein Beispiel

• Die Debugging Konsole

• Smarty in der Praxis

• Fazit

• Quellenangabe

• Der PHP Quelltext• Konfigurationsdateien • Die Template Dateien

Page 3: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Was ist Smarty ?Was ist Smarty ?Smarty ist eine Templatesystem welches Programmieren und Designer ermöglicht getrennt an einem Projekt zu Arbeiten.

Smarty

Design

Datenbank

Logik

Klassischer Ansatz Mit SmartyDesigner

Datenbank Prog.

Logik Prog.

Page 4: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Der EntwicklungsprozessDer Entwicklungsprozess

• 1999 von Monte Orth und Andrei Zmievski erdacht

• Als PHP Bestandteilgedacht

• Ursprünglich in C entwickelt

• Erste PHP Version konnte nur reguläre Ausdrücke parsen

• Erstveröffentlichung 18.01.2001, enthielt bereits Caching

• Version 2.0 erschien im März 2002 wichtigste Neuheit: Plug-ins

• Version 2.6 veröffentlich am 19.11.2003

• Aktuelle Version 2.6.18 stammt vom 07.03.2007

• Dokumentation verfügbar in vielen Sprachen, seit Anfang März 2003 auch auf Deutsch

Page 5: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Was Smarty bietetWas Smarty bietet

Open Source Einfache

Install-ation

Sicher-heit

Debugger

Geschwin-digkeit

Plug-ins

Filter

Mehr-sprach-igkeit

Smarty

Page 6: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Installation

• Aktuelle Version zu finden unter www.smarty.net

• Systemvorrausetzungen: PHP >= 4.2.1

• Dateien entpacken, Pfade eintragen, fertig

Was Smarty bietet (2)Was Smarty bietet (2)

Sicherheit

• Designer können Logik/Datenbankcode nicht ändern

• Vielfältige Möglichkeiten Rechte zu beschränken

Debugger

• Smarty besitzt eine eigene Debugging Konsole

Page 7: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Geschwindigkeit

• Templates werden „compiliert“

• Seiten können gecachet werden

• Unter bestimmten Vorrausetzungen, schneller als pures PHP

Was Smarty bietet (3)Was Smarty bietet (3)

Plug ins

• Für viele Probleme existieren bereits fertige Lösungen

• Plug-ins bestehen aus php Dateien

• Dynamisches Laden von Plug-ins

• Arbeitsaufwand stark gemindert, da Code wiederverwendet werden kann

Page 8: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Filter

• Pre Filter

• Post Filter

• Output Filter

• Vielfältige Möglichkeiten zur Optimierung

Was Smarty bietet (4)Was Smarty bietet (4)

Mehrsprachigkeit

• Templates können einfach für verschiedene Sprachen angepasst/erstellt werden

• Integration der PHP gettext Funktion

Page 9: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Des weiteren bietet Smarty für Designer viele aus anderenSprachen bekannte Strukturen und Funktionen u.a.:

Was Smarty bietet (5)Was Smarty bietet (5)

• Schleifen• if, else, elseif• Arrays• Reguläre Ausdrücke• Mathematische Funktionen• Funktionen zur Vereinfachung von HTML Befehlen• Modifikation von Variablen• Integration von PHP, Javascript

Für Programmierer gibt es einige zusätzliche Funktionen,welche Schwachstellen in PHP verbessern, der Großteildes Quelltextes ist jedoch weiterhin reines PHP.

Page 10: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty Projekte - Ein BeispielSmarty Projekte - Ein Beispiel

Erstellung folgender Webseite

Page 11: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Der Quelltext ist eine normale PHP Datei (hier ohne Logik, Datenbankzugriffe, etc) mit zusätzlichem Smartycode.

index.php

Smarty ist eine Klasse in PHP

Es gibt diverse Einstellungen

<?phprequire 'Smarty.class.php';$smarty = new Smarty; $smarty->compile_check = true;$smarty->debugging = true;

$smarty->assign("Namen", array("Christian Voß",

"Michael Klenke", "Eric Sternberg"));

assign (x,y)x = Variablen NameY = Variablen Werte

Smarty Projekte – Ein BeispielSmarty Projekte – Ein Beispiel Der PHP Quelltext

Page 12: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Es können alle bekannten PHP Datentypen zugewiesen werden, sowie ein und mehrdimensionale Arrays.

$smarty->assign("Themen", array("Christian Voß" =>array("smartylogo.jpg", "Smarty Templates"), "Michael Klenke" => array("javalogo.jpg", "Java Server-Pages(JSP)") "Eric Sternberg" => array("waplogo.jop", "WML (WAP)")));

$smarty->assign("datum", array(1000 => "11.01.2008", 1001 => "12.01.2008", 1002 => "18.01.2008"));

$smarty->assign("aktuelles_datum", 1000);

$smarty->display('index.tpl');?>

display(tlp) lädt das Template „tlp“

Smarty Projekte – Ein Beispiel Smarty Projekte – Ein Beispiel Der PHP Quelltext

Page 13: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielKonfigurationsdateien

Smarty kennt so genante Konfigurationsdateien, in denen konstante Werte für ein Projekt gespeichert werden können.

Konfigurationsdateien……sind optional…können verschiedene Sektionen haben…müssen in ein Template geladen werden…besitzen zu Klassen äquivalente Geltungsbereiche (scopes)…werden in Templates mit {#name#} eingesetzt

Für unser Beispiel verwenden wir folgende, sehr einfach gehaltene, Konfigurationsdatei:

title = seminar internet-technologie

seminar.conf

Page 14: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien

Projekte können aus beliebig vielen Dateien bestehen, welche untereinander geladen werden können, vergleichbar mit require Befehl aus PHP, bzw. include aus C.

Template Dateien bestehen aus normale HTML Code, welcher mit Smartybefehlen erweitert wird.

In unserem Beispiel haben wir 3 Dateien.

{config_load file=seminar.conf}<HTML><HEAD><TITLE>{$apptitle}</TITLE></HEAD><BODY bgcolor="#ffffff"><p align="center"><strong><font size="+4">{#title#|capitalize} </font></strong></p>

header.tlp

{$varname} greift auf die Inhalte von Variablen zu

Page 15: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Die eigentliche Hauptdatei, welche von index.php geladen wurde.

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien

index.tlp

{include file="header.tpl" apptitle="Ein einfaches Smarty Beispiel"}<table width="100%" border="1">

{include file =„name“} lädt die mit Name angegebene Datei.Intern wird dabei der Quelltext der anderen Datei an die Stelledes includes kopiert.

Es können beliebig viele Parameter der Form varname=„text“ existieren, welche in der zu ladenden Datei die Variable varname mit dem Inhalt „text“ erzeugen.

Page 16: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien

For…each iteriert ein Array und bietet zusätzliche Informationen.

{html_image file} ersetzt den HTML Befehl <img src=>.

{foreach item=name from=$Namen} <tr> {foreach item=info from=$Themen[$name] name="inner"} {if $smarty.foreach.inner.first} <td width="20%" height="117">{html_image file=$info}</td> {else} <td width="80%"><p><strong><font size="+2">Thema: {$info}</p> Gehalten von: {$name}</strong></font></td> {/if} {/foreach} </tr>{/foreach}

Page 17: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien

html_options ist ein weiterer von vielen Befehlen die um- ständliche oder nicht vorhandene HTML Befehle ersetzen. Html_options erstellt dabei eine Combobox.

Weitere sind unter anderem:

• mailto (erzeugt verschlüsselte eMail Links)• math (ermöglicht mathematische Berechnungen)• popup (erzeugt ein Popup Fenster)

Anderes Datum wählen: {html_options name=datum_auswahl

options=$datum selected=$aktuelles_datum}

{include file="footer.tpl"}

Page 18: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Nach dem kompilieren entsteht je nach Einstellung eine PHP oder HTML Datei, welche zwar geöffnet werden kann, allerdingsschwer zu lesen ist, da keine Formatierungen existieren.

Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien

Im Footer wird schließlich noch das aktuelle Datum/Uhrzeit angezeigt. Dies geschieht mit Hilfe der Funktion now; mit date_format wird das Anzeigeformat bestimmt

<br>Seite wurde erstellt: {$smarty.now | date_format:"%d.%m.%Y %H:%M:%S"}</BODY></HTML>

footer.tlp

Page 19: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Die Debugging KonsoleDie Debugging Konsole

Werte und

Datentypen

aller Variablen

werden hier

angezeigt, sowie

einige statistische

Informationen

Page 20: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

Smarty in der PraxisSmarty in der PraxisAuf der Herstellerseite findet sich eine Liste mit Referenzseitendie Smarty verwenden. Bekannte Seiten lassen sich jedoch nurvereinzelt finden, obwohl Smarty inzwischen fast 6 Jahre alt ist.

Mögliche Gründe dafür könnten sein:

• Kein Bedarf an Template Systemen, oder bessere Alternativen

• Das MVC-Prinzip wird nicht vollständig umgesetzt

• Hohe Einarbeitungszeit, da sowohl Designer als auch Programmier eine zusätzliche Sprache lernen müssen

• Designer, die in der Lage sind die Smarty Logik zu verstehen, sollten ebenfalls in der Lage sein PHP direkt zu nutzen

• Smarty kann (vor allem bei falscher Anwendung) deutlich langsamer sein als pures PHP

• Mehraufwand bei der Projekterstellung

• Wenig Fachliteratur verfügbar

Page 21: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

FazitFazitSmarty hat, wie so vieles, seine Vor- und Nachteile. Für bestimmte, eher einfache Projekte, ist es sicherlicheine Option Smarty zu verwenden. Den großen Durchbruch wird es jedoch vermutlich nicht erleben, dadie Nachteile teilweise doch sehr erheblich sind.

Page 22: Seminar Internet-Technologie Thema: Smarty Templates Vortragender: Christian Voß Datum: 11.01.2008

QuellenangabeQuellenangabeAlle hier aufgeführten Informationen stammen entweder von

http://www.smarty.net

oder aus dem Buch

„Smarty – PHP Template Programming and Applications“von Lucian Gheorghe, Hansin Hayder und Joao Prado MaiaHerausgegeben von Pack Publishing, 2006