Smarty – to obiektowy framework pozwalający tworzyć szablony dla stron pisanych w języku PHP. Umożliwia oddzielenie warstwy logiki (skryptów PHP) od warstwy prezentacji (szablonów HTML). Wbudowany system cache Smarty znacznie przyspiesza działanie serwisu. Buforowanie zawartości odciąża serwer i umożliwia obsłużenie większego ruchu w przypadku dużych i złożonych projektów. Pakiet Smarty jest dostępny na licencji Open Source (GNU GPL). Można go pobrać z oficjalnej strony projektu: smarty.net.

Instalacja Smarty jest bardzo prosta. Po rozpakowaniu archiwum wystarczy skopiować całą zawartość na serwer FTP.

Hierarchia katalogów:

A teraz troche praktyki. Zapisz swój pierwszy szablon w katalogu templates pod nazwą: szablon.tpl.

Zawartość szablonu to nic innego jak kod HTML. Wewnątrz klamr {…} pojawią się wartości zmiennych przekazane ze skryptu PHP. Zaraz zobaczysz jakie to proste 😉 Zapisz plik pod nazwą skrypt.php i skopiuj do niego poniższą treść:

Odpal w przeglądarce skrypt.php i podziwiaj efekt swojej pracy 😉

INCLUDOWANIE SZABLONÓW

Do wnętrza szablonu można wczytać zawartość innego szablonu. Odbywa się to za pomocą dyrektywy include, np. {include file=”szablon.tpl”}

Zmodyfikujmy powyższy przykład dzieląc szablon na dwie części (zapisane w osobnych plikach):

head.tpl:

footer.tpl:

Wewnątrz pliku szablon.tpl dołączamy szablony head.tpl i footer.tpl, spinając wszystko w jedną całość:

skrypt.php pozostawiamy bez zmiany. Myślę, że zabieg ten nie wymaga większych wyjaśnień. Po prostu oddzieliłem treść strony od nagłówka i stopki, tak aby nie powielać stałych elementów strony w kolejnych szablonach. Zaleta jest oczywista.

SEKCJE

Sekcja to rodzaj pętli. Zasada ich działania jest identyczna jak w PHP. Konstrukcja pętli ma postać: {section name=i loop=$list}…{/section}.

Dla przykładu wyświetlimy listę newsów czerpaną z bazy danych.

Do tablicy $newsy zapisujemy pobrane rekordy z bazy. Zawartość tablicy zostanie wstrzyknięta do szablonu news.tpl:

Do parametru name przypisujemy iterator „i” sekcji. Drugi parametr loop przyjmuje wartość tablicy $newsy. Aby odwołać się do określonego pola np. data stosujemy składnię $newsy[i].data – po kropce podajemy nazwę zmiennej. W przykładzie pobieramy wartości trzech zmiennych: id, nazwa i data.

Wyniki zapytania SQL można również pobrać do tablicy asocjacyjnej.

Zmieniamy linię:

Szablon pozostaje bez zmian.

INSTRUKCJE WARUNKOWE

Zasada ich działania jest identyczna jak w PHP. Konstrukcja ma postać: {if warunek}…{/if}, {elseif}, {else}

Dla przykładu wyświetlimy atrybut lang, który definiowaliśmy w poprzednich skryptach.

Przykład z użyciem: {else}

KOD NIE INTERPRETOWANY

Wewnątrz bloku {literal}…{/literal} można osadzać kod, który nie będzie interpretowany. Natomiast w bloku {php}…{/php} można osadzać skrypty PHP. Ze względów bezpieczeństwa nie jest to zalecana praktyka.

ZMIENNE ZAREZERWOWANE

W szablonach Smarty dostęp do zmiennych globalnych typu: $_POST, $_GET, $_COOKIE itd odbywa się za pomocą zarezerwowanej zmiennej {$smarty}.

Przykłady:

POBIERANIE SZABLONU DO ZMIENNEJ

W Smarty istnieje możliwość pobrania treści szablonu do zmiennej. Służy do tego metoda fetch.

Więcej o pakiecie Smarty znajdziesz na oficjalnej stronie projektu: smarty.net.