Pierwsze kroki w Smarty

Data dodania:
31 maja 09
Autor:
Robert Węglarek
Kategoria:
Inne

W poradniku tym postaram się przekazać podstawy, skąd pobrać, jak skonfigurować, jak napisać prosty szablon na podstawie biblioteki Smarty.
Na początek podam może cytat z Wikipedii:

Smarty to obiektowa biblioteka skryptów służąca do tworzenia szablonów dla aplikacji PHP. Pozwala na separację logiki aplikacji (PHP) od jej warstwy prezentacyjnej (HTML).
Smarty działa poprzez umieszczanie w szablonach znaczników, które następnie są zastępowane generowaną przez aplikację treścią. Pakiet umożliwia stosowanie struktur kontrolnych (decyzyjnych, pętli, itp). System Smarty cechuje się wysoką wydajnością dzięki kompilowaniu szablonów do postaci skryptów php, a także wbudowanemu systemowi buforowania.
Smarty jest pakietem o otwartym kodzie źródłowym, udostępnianym na zasadach licencji Lesser GPL. Można w łatwy sposób wzbogacać jego funkcjonalność poprzez pluginy.

Tak pokrótce – dzięki Smarty możemy oddzielić kod wykonywany po stornie serwera(PHP) od wykonywanego po stronie użytkownika(np. HTML, JS). Dzięki temu kod staje się dużo bardziej przejrzysty. Ja, w miarę poznawania Smarty, nie mam zamiaru wracać do starych przyzwyczajeń mieszania PHP z HTMLem.

Oficjalna strona Smarty to: www.smarty.net. Tam też znajdziecie dokumentację – niestety brak języka polskiego. Warto się z tym zapoznać i często zaglądać :) Polecam również polską dokumentację – niestety jest uboższa.
Stąd pobieramy biblioteki. Tworzymy na serwerze katalog smarty(bądź inny) – w nim będziemy przechowywali Smarty. Wrzucamy do niego zawartość katalogu /libs/.
Następnie w katalogu głównym na serwerze tworzymy katalog do przetrzymywania plików szablonów. Nazwijmy go templates.
Do prawidłowego działania Smarty musimy jeszcze utworzyć 3 katalogi. Tak więc w katalogu /smarty/ tworzymy katalogi: templates_c, cache, configs. Zgodnie z poleceniem z manuala nadajemy im chmod 755.

Po tych zabiegach mamy już gotową strukturę katalogów i możemy zacząć pisać pierwszą stronę opartą o Smarty.

W katalogu /templates tworzymy plik index.tpl


{$tekst1}

Nie ma w nim nic nadzwyczajnego oprócz tego kawałka:

{$tekst1}

Tak deklarujemy zmienne, które chcemy wyświetlić. W tym wypadku wyświetlimy zmienną tekst1.

Teraz tworzymy w katalogu głównym plik index.php

require_once('smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = "templates/";
$smarty->compile_dir  ='smarty/templates_c/';
$smarty->config_dir   = 'smarty/configs/';
$smarty->cache_dir    = 'smarty/cache/';

$pokaz='Pierwszy tekst w SMARTY :) ';
$smarty->assign('tekst1', $pokaz);
$smarty->display('index.tpl');
?>

Po wywołaniu strony index.php w przeglądarce naszym oczom ukaże się strona z napisem: Pierwszy tekst w SMARTY :) .

A teraz, co my tam popisaliśmy:
Pierwsze 6 linii czyli:

require_once('smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = "templates/";
$smarty->compile_dir  ='smarty/templates_c/';
$smarty->config_dir   = 'smarty/configs/';
$smarty->cache_dir    = 'smarty/cache/';

to dołączenie biblioteki Smarty, utworzenie nowego obiektu $smarty oraz ustawienie odpowiednich katalogów.

$pokaz='Pierwszy tekst w SMARTY :) ';

przypisuje nam jakiś tekst do zmiennej $pokaz – nie ma w tym nic nadzwyczajnego :)

$smarty->assign('tekst1', $pokaz);

przekazujemy do szablonu zmienną tekst1 (o zawartości $pokaz) poprzez metodę assign(). To właśnie ona zostanie wstawiona za

{$tekst1}
$smarty->display('index.tpl');

Przetwarzamy szablon metodą display(). W tym momencie następuje przekazanie zmiennych do silnika SMARTY a następnie tworzenie kodu HTML.

Komentarze w Smarty zamieszczamy w następujący sposób:

{* treść komentarza *}

Czasem zajdzie również konieczność opuszczenia parsowania Smarty np. w celu mieszczenia kodu JavaScript zawierającego nawiasy klamrowe. W takim wypadku musimy użyć tagu literal. Całość będzie wyglądała następująco:

{literal} ... kod nie objęty parsowaniem Smarty ... {/literal}

W kolejnej części postaram się napisać nieco więcej o modyfikatorach zmiennych.

~Robert Węglarek