Smarty Tutorial

Smarty besorgen von smarty.php.net

Im ersten Schritt laden wir uns Smarty von der Smarty Website smarty.php.net herunter.

Um Smarty ein wenig zu testen, legen wir in htdocs den Ordner "smartytest" an. In diesem Ordner speichern wir den Smarty download und entpacken das Archiv.

Nachdem Smarty heruntergeladen und entpackt wurde im Verzeichnis "smartytest", legen wir im Verzeichnis smartytest das Verzeichnis "data" an. In Data legen wird folgende Verzeichnisse an:

  • data
    • templates
    • templates_c
    • cache
    • configs

Diese Verzeichnisse werden von Smarty zur Laufzeit genutzt um templates aufzurufen zu rendern und zu cachen. Ausserdem kann von dort die Konfiguration für Smarty eingelesen werden.

 

Hello World mit Smarty

Für unser erstes Beispiel legen wir das Template one.tpl im Ordner "data/templates" an. Die Smarty Templatedatei one.tpl hat folgenden Inhalt:

 

<html> 
  <head>
    <title>{$title}</title>
  </head>
  <body>
    {$content}
  </body>
</html>

Das PHP Skript zum Aufruf von Smarty

Für den Aufruf und die Zuweisungen in unserem ersten Template benutzen wir folgendes PHP Skript

 

 

<ANYSCRIPT>

  <?php
require_once('Smarty-2.6.18/libs/Smarty.class.php');

$smarty = new Smarty();
$smarty->template_dir = 'data/templates';
$smarty->compile_dir = 'data/templates_c';
$smarty->cache_dir = 'data/cache';
$smarty->config_dir = 'data/configs';

$smarty->assign("title", "Hallo");
$smarty->assign("content", "Hallo Welt");

$smarty->display("one.tpl");

?>

</ANYSCRIPT>

In diesem Beispiel wurde die Konfigurationsparamater für Templateverzeichnis, Cache etc. direkt als Attribut zugewiesen. Eine möglicherweise elegantere Methode ist es die Klasse Smarty zu erweitern und die Konfigurationsattribute direkt im Konstruktur zu setzen.

Die Methode "display" von Smarty erwartet eine Templatefile, das im Templateverzeichnis direkt gesucht wird. Das Ergebnis wird von display direkt ausgegeben. Eine Variante um den Inhalt abzufangen und zwischenzuspeichern ist die Methode fetch(); (Smarty macht intern nichts anderes als fetch mit dem 4. Parameter display mit true aufzurufen).

Dieser Code währe also gleich: 

$smarty->display("one.tpl");

echo $smarty->fetch("one.tpl");

 



 

 

 

Navigation