Wykrój na miarę
Podobna idea przyświeca twórcom systemu szablonów – Smarty. W rzeczywistości jest on napisaną w języku PHP klasą, za pomocą której będziemy w stanie połączyć tworzone oddzielnie: kod źródłowy sterujący witryną WWW oraz opracowane w HTML-u szablony stron. Innymi słowy od tej pory osoba pracująca nad sposobem generowania treści strony i ktoś odpowiedzialny za sposób jej prezentacji mogą pracować oddzielnie. Na tym polega podstawowa funkcja Smarty: za pomocą stworzonej w PHP aplikacji zbieramy informacje (np. z bazy danych), które będą stanowiły zawartość serwisu, przypisujemy je odpowiednim szablonom i wyświetlamy w przeglądarce. Zawartością może być wszystko: nagłówek, menu czy publikowany artykuł. Programista nie ma wpływu na to, w jaki sposób dane te zostaną wyświetlone. Projektant oprawy graficznej nie ma natomiast wglądu w kod aplikacji, a jedynie na podstawie plików konfiguracyjnych może określić, jakich zmiennych powinien użyć w poszczególnych miejscach szablonu.
Jakie są zalety takiego rozwiązania? Twórcy wymieniają przede wszystkim:
– bezpieczeństwo kodu źródłowego (projektanci układu strony nie mogą naruszyć struktury aplikacji),
– nieprawidowości w szablonach są ograniczone do systemu obsługi błędów Smarty,
– projektanci mogą zmieniać lub kompletnie przebudowywać layout strony bez interwencji programistów,
– szablony umożliwiają szybkie zaprezentowanie demonstracyjnej wersji produktu (a jest to bardzo ważne np. na etapie negocjacji).
Środowiskiem, w którym będziemy tworzyli nasz projekt, jest SuSE 9.2 Pro z zainstalowanym serwerem Apache i modułem PHP 4.3.8. Smarty działa poprawnie na serwerze z PHP od wersji 4.0.6 w górę – są to jedyne wymagania tej aplikacji.
Przygotuj grunt
Aby rozpocząć pracę ze Smarty, należy pobrać odpowiednie klasy ze strony projektu. Odwiedzamy witrynę smarty.php.net, po czym z sekcji Download! pobieramy plik
Smarty-2.6.8.tar.gz.
Teraz musimy wybrać miejsce, w którym będziemy przechowywali program. Jeśli np. planujemy używanie systemu szablonów w wielu projektach albo chcemy, by wszystkie strony WWW “rezydujące” na danym serwerze mogły z tego programu korzystać, powinniśmy umieścić go w powszechnie dostępnym miejscu, np. tam, gdzie zainstalowaliśmy moduł PHP. Nic nie stoi na przeszkodzie, by pliki te były też umieszczone w dowolnym innym folderze, np. tym, w którym przechowujemy na serwerze naszą stronę WWW. My wybierzemy tę drugą opcję, by stworzyć w ten sposób kompletny i autonomiczny projekt.
W konsoli systemowej zdobywamy prawa administratora, wydając komendę su –. Większość operacji będziemy przeprowadzali z takimi uprawnieniami, zakładając tym samym, że tworzymy profesjonalną aplikację (oczywiście możemy też się skupić na folderze Public HTML/ w naszym katalogu domowym). Wydając polecenie cd /srv/www/htdocs, przechodzimy do katalogu, gdzie przechowywane są pliki stron WWW. Załóżmy tam katalog, w którym będziemy trzymali wszystkie pliki naszego projektu, a w nim podkatalog ze Smarty. Zrobimy to, wpisując polecenie mkdir -p mojeLinki/Smarty. Od tej pory w przeglądarce lokalnej będziemy się mogli odwoływać do tworzonej przez nas strony, wpisując w pole adresu localhost/mojeLinki/ .
Listing 3. Wykorzystanie funkcji {section} |
enuGlowne1.tpl 1. <table class=”menu” width=”200px”> 2. {section name=menu loop=$menuGlowne} 3. <tr> <td><a href=”index.php?id={counter}”> {$menuGlowne[menu]}</a></td></tr>4. {/section} 5. </table> tabelaLinkow1.tpl |
Rozpakowujemy pobrane archiwum poleceniem tar -zxvf Smarty-2.6.8.tar.gz, po czym kopiujemy interesujące nas pliki w uprzednio przygotowane miejsce (
cp -r Smarty-2.6.8/libs/* /srv/www/htdocs/mojeLinki/Smarty/
). Jeśli sprawdzimy zawartość katalogu Smarty/ (a wszystko do tej pory udało się nam wykonać poprawnie), powinniśmy mieć przed oczyma następującą strukturę danych:
Config_File.class.php, debug.tpl, internals/, plugins/, Smarty.class.php, Smarty_Compiler.class.php
. Możemy śmiało powiedzieć, że instalacja modułu Smarty została zakończona. Pozostaje nam przygotować projekt.
W tym celu w katalogu mojeLinki/ należy utworzyć cztery specjalne foldery (
templates/, templates_c/, cache/, configs/
), po czym dwóm z nich (
template_c/
oraz
cache/
) nadać odpowiednie prawa. Ostatnią czynność wykonujemy poleceniem chmod 775 nazwa_katalogu. W pierwszym z czterech folderów będziemy przechowywali zaprojektowane przez nas szablony w postaci plików TPL, w drugim zaś ich skompilowane wersje. W tym miejscu ujawnia się duża zaleta Smarty, który jako system szablonów jest bardzo wydajny i szybki – szablony kompilują się bowiem tylko raz. Na dodatek w kolejnym katalogu cache/ system przechowuje rezultat wyświetlenia skompilowanych szablonów, oszczędzając przy tym czas potrzebny do ponownego ich uruchomienia. W ostatnim katalogu będziemy przechowywali pliki konfiguracyjne, z których Smarty pobierze informacje o ustawieniach naszego projektu.