| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Holzhaus Neuer Benutzer

Anmeldedatum: 26.03.2008 Beiträge: 14 Wohnort: Gelsenkirchen Programmiersprachen: PHP 5, Perl, JavaScript, ActionScript 2, Bash Compiler: MTASC für AS2
|
Verfasst am: 27.03.2008, 16:35 Titel: [PHP] Benutzung der Smarty Template Engine |
|
|
So, ich hab mal ein kleines HowTo für Smarty geschrieben. Es ist noch sehr simpel gehalten, aber vielleicht erweitere ich das damnächst noch um Features wie Sections und Foreach-Schleifen.
1. Was ist Smarty?
Smarty ist eine sogenannte Template Engine, welche dazu verwendet wird, den Programmcode deiner PHP-Anwendung von dem HTML-Quelltext zu trennen. Zusätzlich kann sie noch benutzt werden, um auch die Texte und sonstigen Ausgaben von dem Rest der Anwendung zu seperieren und diese so leichter übersetzbar zu machen.
2 Installation
Nach dem Download der Smarty Engine, welche von der Hompage des Projekts bezogen werden kann, muss diese in den PHP-Include-Path verschoben werden. Nach Möglichkeit sollte Smarty jedoch nicht in dem DOCUMENT_ROOT eures Webservers liegen.
Linux
Zuerst wird Smarty heruntergeladen:
| Code: |
$ cd ~
$ wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.19.tar.gz |
Nun muss es entpackt und in einen Ordner im PHP-Include-Path (hier: /usr/local/lib/php/) verschoben werden:
| Code: |
$ tar -zxvf Smarty-2.6.19.tar.gz
$ mkdir /usr/local/lib/php/Smarty
$ cp -r Smarty-2.6.19/libs/* /usr/local/lib/php/Smarty |
Windows
Ein englischsprachiges HowTo zur Installation auf einem Windows-Server befindet sich hier.
3. Wie funktioniert Smarty?
3.1. Das Prinzip
Man braucht im Prinzip mindestens 3 Dateien:
- Die PHP-Datei, welche etwas ausgeben soll
- Ein sog. Template, das den HTML-Quelltext und Platzhalter für die späteren Ausgaben enthält
- Die Smarty-Engine
3.2 Umsetzung
Zunächst braucht ihr 3 Ordner:
- templates
- config
- templates_c
- cache
templates_c und cache sollten nicht im DOCUMENT_ROOT eures Serves liegen. Wenn beispielsweise /srv/www/htdocs euer DOCUMENT_ROOT ist, dann könntet ihr die Ordner in /srv/www/smarty anlegen:
| Code: |
$ cd /srv/www
$ mkdir smarty
$ mkdir smarty/templates_c
$ mkdir smarty/cache
$ mkdir htdocs/smarty
$ mkdir htdocs/smarty/templates
$ mkdir htdocs/smarty/config |
Die Ordner templates_c und cache müssen für den PHP-Benutzer (z. B. wwwrun) schreibbar sein.
| Code: |
$ chown -R wwwrun smarty
$ chmod -R 744 smarty |
3.3 Beispiel 1
Nun erstellen wir ein neues PHP-Script names "test.php" in dem Ordner /srv/www/htdocs und initialisieren eine neue Instanz der Smarty-Klasse:
| Code: |
<php>template_dir = "/srv/www/htdocs/smarty/templates";
$smarty->config_dir = " /srv/www/htdocs/smarty/config";
$smarty->cache_dir = "/srv/www/smarty/cache";
$smarty->compile_dir = "/srv/www/smarty/templates_c"; |
Anschließend können Ausgaben zugewiesen werden:
| Code: |
| $smarty->assign("message","Hallo, Welt!"); |
Um das Template zu parsen (also die Platzhalter im Template durch die entsprechenden Werte zu ersetzen) und dann auszugeben, schreiben wir noch folgendes in die Datei:
| Code: |
$smarty->display("test.tpl");
?> |
"test.tpl" ist also der Name des Templates. Doch Halt! Das Template gibt es ja noch gar nicht! Also müssen wir eine weitere leere Textdatei erstellen.
In diese schreiben wir nun folgendes:
| Code: |
<html>
<head>
<title>Smarty Testseite</title>
</head>
<body>
{$message}
</body>
</html> |
Die Datei wird anschließend als "test.tpl" in den Template-Ordner gespeichert (hier: /srv/www/htdocs/smarty/templates).
Nun rufen wir die PHP-Datei auf und es erscheint (hoffentlich) "Hallo, Welt!" auf dem Bildschirm, denn der Platzhalter {$message} wurde durch den Wert ersetzt, den wir im PHP-Script zugewiesen haben.
So weit, so gut, aber es ist doch ziemlich nervig, in jeder Datei immer die Template-Ordner festlegen zu müssen.
3.4 Beispiel 2
Daher erstellen wir ein neues Script names "SmartyX.class.php" mit folgendem Code:
| Code: |
<php>Smarty();
//Hier setzen wir die Standardeinstellungen
$smarty->template_dir = "/srv/www/htdocs/smarty/templates";
$smarty->config_dir = " /srv/www/htdocs/smarty/config";
$smarty->cache_dir = "/srv/www/smarty/cache";
$smarty->compile_dir = "/srv/www/smarty/templates_c";
//Zusätzlich können wir hier noch weitere Variablen standardmäßig definieren
$smarty->assign("author","Max Mustermann");
$smarty->assign("project","SmartyApp");
}
}
?> |
In Zukunft reicht schon ein einfaches
| Code: |
<?php
require("SmartyX.class.php");
$smarty = new SmartyX();
|
um Smarty zu benutzen. _________________
| Zitat: |
| Wir sollten die Leistungsfähigkeit der Nachrichtendienste nicht durch parlamentarische Untersuchungsausschüsse gefährden |
- W. Schäuble auf einem Symposium des Bundesnachrichtendiensts am 1. November 2007 |
|
| Nach oben |
|
 |
thorn Benutzer

Anmeldedatum: 23.09.2007 Beiträge: 48 Wohnort: Niederried b.K. (CH) Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB
|
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Anhänge in diesem Forum nicht anhängen. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|