Świetny system do obsługi szablonów. Jeżeli o nim nie słyszałeś, lub nie bardzo wiesz co to jest i jak z tego korzystać musisz przeczytać ten artykuł.
Smarty jest to gotowy system do obsługi szablonów. Postaram się pokrótce napisać jak działa i podać krótkie przykłady jego działania. Smarty jest bardzo rozbudowany co sprawia że korzystanie z niego daje świetne efekty. Smarty kompiluje szablony do kodu PHP przy pierwszym uruchomieniu, lub po zmianie danych (jest to opcjonalne). Sprawia to, że jest bardzo szybki, gdyż ilość kompilacji w tym wypadku jest ściśle ograniczona. Pliki szablonów w Smarty mają rozszerzenie .tpl, a tagi szablonu (wzorce) są ujęte w ogranicznikach, domyślnie „{” i „}”. Oprócz tego Smarty posiada szereg wbudowanych funkcji, zmiennych, stałych oraz wewnętrznych metod i właściwości, przez co korzystanie ze Smarty jest niezwykle sprawne i wygodne. Niektóre z ww. właściwości Smarty przedstawię w tym artykule, posłużę się po części przykładami z dokumentacji.
Instalacja (skrócona)
Po ściągnięciu Smarty rozpakuj je i skopiuj je na swój serwer (Apach, Krasnal, etc.). Najważniejszy jest folder /libs/ to w nim są biblioteki. Stwórz teraz plik index.php. Wykorzystaj funkcję require(), aby dołączyć plik: Smarty.class.php. Użyj ścieżki bezwzględnej, np.: (krasnal) /usr/krasnal/www/smarty/libs/Smarty.class.php. Teraz w katalogu z plikiem index.php stwórz cztery inne katalogi o nazwach:
| /templates/ /templates_c/ /configs/ /cache/ |
w katalogu templates utwórz plik index.tpl i wpisz w nim:
| <!–index.tpl–> To jest test. Czy działa? <br> {$dziala} |
w pliku index.php wpisz:
| <!–index.php–> require(„Smarty.class.php”); //użyj tutaj swojej ścieżki dostępu $smarty = new Smarty $smarty->template_dir = „/templates/” //ścieżka bezwzględna do folderu /templates/ $smarty->assign(’dziala’, 'jasne że działa’); $smarty->display(’index.tpl’); |
Teraz załaduj do przeglądarki plik index.php i jeśli ukaże ci się napis:
| To jest test. Czy działa? jasne że działa |
To znaczy, że wszystko działa, jeżeli nie to sprawdź ścieżki dostępu.
!!! Uwaga jest to jedna z kilku metod instalacji !!!
Po tym prostym przykładzie widać jak wygląda Smarty, kod HTML jest niemal całkowicie oddzielony od kodu PHP, jest to bardzo praktyczne. W Smarty można tworzyć własne pliki z konfiguracją a następnie je dołączać, przez co można sobie zaoszczędzić kilka linii w kodzie PHP.
Przykładowe funkcje Smarty:
W naszym pliku z szablonem możemy zamiast {$dziala}, napisać:
| {$dziala|capitalize} |
zmieni to pierwsza literę na wielką.
Kolejnym przykładem może być zapis:
| {$dziala|count_characters} |
Wyświetli to liczbę: 15
funkcja ta liczy znaki w podany łańcuchu.
Lub też można zapisać
| {$dziala|indent:10} |
Spowoduje to wcięcie ciągu o 10 znaków
W smarty można mieszać funkcje (zwane modyfikatorami) np.:
| {$dziala|indent:10|capitalize} |
spowoduje to zmianę pierwszej litery na dużą i wcięcie na 10 znaków.
Smarty umożliwia również umieszczenie kodu php w szablonie, chodź nie jest to zalecane, dokonuje się tego pomiędzy {php} a {/php} i wpisywany kod ma nieco inny format, ale nie będę się na ten temat rozpisywał.
Smarty posiada również szereg wbudowanych funkcji np.: można używać plików dołączonych za pomocą funkcji include, która ma składnię:
| {include file=”jakisplik.tpl”} |
Można używać literałów, które będą pominięte przez interpreter Smarty, umieszczając je pomiędzy odpowiednimi tagami, np.:
| {literal} //instrukcje pominięte przez interpretację smarty {/literal} |
Można oczywiście wpisać na stronie znak „{” lub „}” przy pomocy kodu:
| {ldelim} |
lub
| {rdelim} |
W deklaracji Smarty jest również mnóstwo metod, jak na przykład znana już: assign, która służy do inicjalizacji zmiennych:
| assign(’nazwa_zmiennej’, 'Wartość zmiennej’); |
można dzięki jej deklarować również tablice i tablice wielowymiarowe:
| assign(’nazwa_tablicy’,’array(’Flip’, 'Flap’, array(’Bolek’, 'Lolek’))’) |
do tablic wielowymiarowych odwołujemy się przez:
| {nazwa_tablicy[1][2]} |
To tylko niektóre z możliwości Smarty. Smarty warte jest uwagi z wielu powodów, między innymi dlatego że ułatwia o wiele pracę w zespole i podział obowiązków pomiędzy programistę a desingera. Należy jednak pamiętać, że Smarty nie oddziela kompletnie kodu PHP od HTML, więc obie strony (tzn. programista i designer) muszą mieć jako takie pojęcie o Smarty żeby efektywnie i efektownie z niego korzystać.
