Smarty system szablonów 01 Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem programistów tworzących aplikacje w tym języku. Bardzo często taki kod w znacznym stopniu przeplatał się tagami HTML. Wygląda to tak, jakby kod PHP był wbudowany w HTML niczym JavaScript. W dobie obiektowego PHP, wszechobecnych klas i powszechnej migracji do warstwowego HTML-a wydaje się to bardzo nieeleganckie rozwiązanie. Odłączenie kodu aplikacji od kodu HTML, który służy do wyświetlenia wyników jej pracy, pozwala na tworzenie aplikacji bardzo elastycznych, pozwalających na szybką zmianę ich wyglądu. Już od kilku lat powstają rozwiązania pozwalające na osiągnięcie tego celu, są to tzw. systemy template czy też silniki template. Wielu programistów tworzy też własne systemy tego typu na potrzeby własnych aplikacji, systemy szablonów są także powszechnie wykorzystywane w popularnych open sourcowych CMS-ach, forach, blogach czy sklepach internetowych. W tym haśle postanowiliśmy opisać jeden z najpopularniejszych silników template Smarty. Korzysta z niego wiele popularnych serwisów, stanowi on także bazę dla innych silników. Dlatego informacje zawarte w tym artykule pozwolą Ci na poznanie mechanizmów template w ogólności na przykładzie Smarty, który ma bardzo szeroką paletę możliwości. Przeczytasz m.in.: W jaki sposób zainstalować i skonfigurować system szablonów Smarty? 02 Jak zautomatyzować najczęstsze funkcje wyświetlania? 04 W jaki sposób wykorzystać silnik Smarty do tworzenia prostych ankiet? 21 Jak korzystać z wbudowanego mechanizmu cache i jak to wpływa na wydajność aplikacji? 27 BBP 403 autor Paweł Szczepaniak redaktor merytoryczny poradnika Zastosowania PHP Instalacja i konfiguracja Zastosowania Kompendium Narzędzia
02 Smarty system szablonów Instalacja Do pracy Smarty wymaga PHP w wersji 4.0.6, co na dzień dzisiejszy, w dobie PHP 4.4.6, PHP 5.2.1, nie stanowi żadnej przeszkody. Po pobraniu najnowszej wersji Smarty z adresu http://smarty.php.net/ należy rozpakować pliki i przenieść je do katalogu z bibliotekami systemu, np. do katalogu /usr/local/lib/ php/smarty/. W systemie Linux można to przeprowadzić np. w następujący sposób: $> gtar -zxvf Smarty-2.6.18.tar.gz $> mkdir /usr/local/lib/php/smarty $> cp -r Smarty-2.6.18/libs/* /usr/local/lib/php/smarty Analogicznie w systemie Windows należy rozpakować pliki i przenieść je do katalogu php/libs czy też innego katalogu wskazanego w pliku php.ini. Operacji tej nie będziemy szczegółowo omawiać ze względu na jej trywialność. W przypadku hostingu wirtualnego, szczególnie u najpopularniejszych polskich firm trudniących się tym niełatwym jak się okazuje zadaniem, dostęp do katalogu z bibliotekami nie jest możliwy, trzeba więc w ramach dostępnego miejsca na serwerze stworzyć oddzielną strukturę do przechowywania biblioteki Smarty i innych, które chcesz wykorzystywać. Pamiętaj przy tym, aby nadać odpowiednie uprawnienia do katalogu i zablokować dostęp do jego przeglądania. W skład biblioteki Smarty wchodzą następujące klasy (powinieneś je znaleźć w katalogu lib):
Smarty system szablonów 03 Smarty.class.php, Smarty_Compiler.class.php, Config_File.class.php. Po tych kilku operacjach powinieneś mieć już możliwość zainicjowania klasy i utworzenia nowego obiektu Smarty. Pamiętaj o pisowni Smarty przez wielkie S. Unikniesz dzięki temu problemu z zainicjowaniem obiektu tej klasy:-). Listing 1. 1 2 3 4 5 6 7 8 9 10 11 12 <?php require_once('smarty/libs/smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = '../smarty/templates'; $smarty->compile_dir = '../smarty/templates_c'; $smarty->cache_dir = '../smarty/cache'; $smarty->config_dir = '../smarty/config';?> Przykład ten dotyczy sytuacji, w której biblioteka Smarty jest umieszczona w katalogu dostępnym z poziomu serwera WWW, czyli tak jak w przypadku popularnego hostingu wirtualnego. Przed jego uruchomieniem należy utworzyć jeszcze strukturę katalogów, z których silnik template będzie korzystał. Są to katalogi: smarty/templates katalog przechowujący kod szablonów,
Niedostępne w wersji demonstracyjnej. Zapraszamy do zakupu pełnej wersji książki w serwisie