Smarty einrichten

Für mein neues Projekt habe ich mich dazu entschlossen, Smarty zu benutzen.
Smarty ist – kurz gesagt – eine PHP-Klasse mit der man PHP-Code und HTML trennen kann.

Es ist grundsätzlich sinnvoll, die lib-Dateien nicht in das library-Verzeichnis von PHP zu kopieren, sondern sie in den Projektordner zu kopieren.

Gegeben ist der Projektordner “balduin” welcher folgende Ordnerstruktur bekommt:

/balduin/inc/
/balduin/lib/
/balduin/php/
/balduin/tpl/
/balduin/tpl_c/

In dem inc-Ordner kommen später Konfigurationsdateien rein, zum Beispiel die Zugangsdaten für die Datenbank.
In dem lib-Ordner kommen die Dateien rein, die im lib-Ordner von Smarty drin sind (siehe INSTALL).
Der php beinhaltet die php-Dateien. Er kann nach eigenem Gutdünken benannt werden.
Im tpl-Ordner sind die Templates (HTML) Dateien drin.

Ich habe im tpl- und im php-Ordner jeweils noch weitere Ordner erstellt, also in diesem Fall ein Ordner für die Startseite (namens “index”):

/balduin/php/index/
/balduin/tpl/index

Darin befindet sich eine index.php bzw. index.tpl.

index.php

<span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"test"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"value"</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;Deklarierung&nbsp;der&nbsp;Variable&nbsp;$test&nbsp;mit&nbsp;dem&nbsp;Wert&nbsp;"value"<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">display</span><span style="color: #007700">(</span><span style="color: #DD0000">"index/index.tpl"</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;Pfad&nbsp;zur&nbsp;dazugehoerigen&nbsp;Template-Datei<br /></span><span style="color: #0000BB">?&gt;</span>

</span>

Um die gerade deklarierte Variable auszugeben, reicht es, folgendes in die index.tpl zu schreiben:

{$test}

Aufgerufen wird alles über die index.php im Projektordner, welche folgenden Inhalt benötigt:

<span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/**&nbsp;smarty&nbsp;*/<br /></span><span style="color: #0000BB">$_application_path&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">getcwd</span><span style="color: #007700">();<br />require_once(</span><span style="color: #0000BB">$_application_path&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/lib/Smarty/Smarty.class.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$s&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">compile_check&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">debugging&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">caching&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">default_modifiers&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'escape:"htmlall"'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$_application_path</span><span style="color: #007700">.</span><span style="color: #DD0000">'/tpl'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">compile_dir&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$_application_path</span><span style="color: #007700">.</span><span style="color: #DD0000">'/tpl_c'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$s</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cache_dir&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$_application_path</span><span style="color: #007700">.</span><span style="color: #DD0000">'/tpl_cache'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$sites</span><span style="color: #007700">[</span><span style="color: #DD0000">"index"</span><span style="color: #007700">]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">"Die&nbsp;Home&nbsp;Seite"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"php/index/index.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$sites</span><span style="color: #007700">[</span><span style="color: #DD0000">"test"</span><span style="color: #007700">]&nbsp;=&nbsp;array(</span><span style="color: #DD0000">"Die&nbsp;Test&nbsp;Seite"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"php/test/test.php"</span><span style="color: #007700">);<br /><br />if(</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"s"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">$sites</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$include_file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$sites</span><span style="color: #007700">[</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"s"</span><span style="color: #007700">]][</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$include_file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$sites</span><span style="color: #007700">[</span><span style="color: #DD0000">"index"</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />}<br /><br />include(</span><span style="color: #0000BB">$include_file</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span>

</span>

In diesem Fall habe ich ausser der index- Datei noch eine test-Datei.
Über folgende URL kann man die Seiten aufrufen:

http://localhost/balduin/index.php?s=index
bzw
http://localhost/balduin/index.php?s=test

Comments are closed.