Smarty
Z PHPEdia.pl
Spis treści |
Podstawy
Smarty - jest jednym z najpopularniejszych systemów do obsługi szablonów napisanych w PHP. Smarty możemy ściągnąć ze strony twórców, smarty.net, gdzie znajdziemy także szczegółową dokumentację dotyczącą instalacji oraz przykład tworzenia szablonów.
Opis
Smarty (jak i inne systemy szablonów) pozwala na oddzielenie warstwy prezentacji - graficznej struktury witryny (HTML, XHTML) od logiki aplikacji (PHP). Jest to przydatne, gdy nad projektem pracuje kilka osób (np. grafik, projektant baz danych, programista, itp.), ponieważ mogą oni swobodnie wykonywać swoją prace bez przypadkowej ingerencji w część witryny na której się nie znają (np. grafik na logice witryny). Stwarza to o wiele większe możliwości rozwoju serwisu niż w przypadku użycia standardowej metody połączenia kodu (X)HTML z PHP.
Zalety
Modyfikacja witryny
Smarty zostało skonstruowane tak, aby w łatwy sposób można było zmienić strukturę dokumentu (X)HTML bez zmiany przewidywanej w danym miejscu treści. Pozwala to na stosowanie różnych wersji witryny (wersji graficznych), zawierających tą samą treść.
Kompilacja szablonów
Cechą Smarty jest kompilowanie szablonów do PHP. Są one parsowane za pierwszym razem (bądź po każdej modyfikacji szablonu) do kodu PHP, który zostaje wykonany przy każdym wyświetleniu treści. Przeparsowany kod przechowywany jest w odpowiednim katalogu na serwerze.
Kompilacja przebiega automatycznie, w sposób niewidoczny dla programisty.
Cache'owanie wyjścia
Smarty nie tylko przechowuje szablony sparsowane do kodu PHP, ale pozwala także zapisywać sam wyjściowy (X)HTML, wraz z treścią - dzięki czemu przy wyświetlaniu szablon nie jest wykonywany. Efektem jest oczywiście przyspieszenie generowania stron, szczególnie tych bardziej złożonych.
Rozszerzanie funkcjonalności
Inną zaletą Smarty jest łatwa możliwość pisania pluginów do tej biblioteki, dzięki czemu możemy poszerzyć jej, i tak już duże, możliwości.
Wady
Krytycy Smarty uważają, że rolę języka opisu szablonów dobrze spełnia PHP, a system szablonów narzuca konieczność nauki nowego języka.
Zarzucić można też toporność - klasy Smarty mają łącznie ponad 150 kB, co przy zastosowaniu w małych projektach wydaje się być dużą liczbę.
Używanie Smarty
Instalacja
Po ściągnięciu archiwum zawierającego Smarty, należy je rozpakować. Po rozpakowaniu musimy przenieść zawartość folderu libs do katalogu z naszą witryną. Musimy także utworzyć takie foldery jak: templates (zawiera szablony), tempalates_c (przechowuje skompilowane szablony), cache (buforowanie wyjścia) i configs (pliki konfiguracyjne dla szablonów) i pamiętać o przyznaniu praw zapisu (chmod 777) katalogom przeznaczonym do zapisu (templates_c, cache).
Tworzenie szablonów
Szablony to nic innego jak zwykłe pliki HTML, tyle że zawierające specjalne znaczniki Smarty. Szablony zapisujemy do folderu templates (można to także zmienić w skrypcie). Rozszerzenie plików szablonów jest dowolne, choć zwyczajowo zwykle stosuje się .tpl bądź .html.
Przykładowy szablon
Oto bardzo prosty przykład szablonu: (szablon1.tpl)
<html> <head> <title>{$tytul}</title> </head> <body bgcolor="{$kolor}"> To jest nasz {$numer} przykładowy szablon smarty. Copyright (c) {$rok} php.pl </body> </html>
Jak widzimy jest to zwykły dokument HTML, w którym dodatkowo umieszczono znaczniki Smarty. Znaczniki te zapisujemy między ogranicznikami - standardowo są to nawiasy klamrowe: { i }. Zapis {$zmienna} spowoduje wyświetlenie zmiennej, której to wartość przypiszemy w skrypcie PHP - w naszym przykładzie: w {$tytul} będzie tytuł dokumentu, za {$kolor} podstawimy kolor tła, za ($numer} numer przykładowego szablonu ("pierwszy"), w {$rok} wstawimy aktualny rok.
Kod PHP: (index.php)
<?php // załączamy klasą Smarty include('Smarty.class.php'); // tworzymy obiekt szablonu $smarty = new Smarty; // przypisujemy zmiennym ich wartości $tytul = "przykładowy tytuł strony"; $kolor = "red"; $numer = "pierwszy"; $rok = date("Y"); // przypisujemy wartości zmiennych do szablonu $smarty->assign('tytul', $tytul); $smarty->assign('kolor', $kolor); $smarty->assign('numer', $numer); $smarty->assign('rok', $rok); // i wyświetlamy szablon $smarty->display('szablon1.tpl'); ?>
