(Nie)szablonowa prezentacja

Kiedy piszemy w PHP aplikację sieciową, pozwólmy, by jej witrynową oprawą zajął się ktoś inny. Rezultaty naszych działań zostaną połączone za pomocą systemu szablonów - Smarty

W profesjonalnych projektach programistycznych zawsze dąży się do tego, by poszczególne elementy przedsięwzięcia mogły być tworzone odrębnie, ale przy uwzględnieniu wstępnych i ogólnych założeń (np. dotyczących zarezerwowanych zmiennych globalnych). Dzięki temu każdy zespół pracuje nad konkretną częścią aplikacji, koncentrując na niej swoją uwagę. W ten sposób udaje się podwyższyć jakość produktu, ponieważ odpowiedni specjaliści pracują nad tym, na czym rzeczywiście się znają. Daje to również możliwość lepszego kontrolowania całego projektu, jego przejrzysta budowa zapewnia bowiem łatwy dostęp do tych części, które chcemy np. zmodyfikować lub poprawić.

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
1. <table width=”200px” align=”center”>
2. {section name=linki loop=$tablicaLinkow}
3. <tr>
4. <td><a href=”{$tablicaLinkow[linki]}”> {$tablicaLinkow[linki]}</a></td>
5. </tr>
6. {/section}
7. </table>

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.

0
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.