Szablony smarty odc.2. Pierwszy szablon

Aby stworzyć pierwszy szablon smarty i zobaczyć jak i czy w ogóle to działa tworzymy plik o nazwie hello.tpl (tak naprawdę nazwa i rozszerzenie są dowolne) i umieszczamy w katalogu templates.
Zawartość pliku powinna wyglądać tak jak na poniższym listingu:

<html>
<head>
<meta http-equiv="Content-type" 
content="text/html;charset=ISO-8859-2">
<title>{$tytul}</title>
</head>
<body>
{$tresc}
</body>
</html>

W przedstawionym szablonie mamy dwa znaczniki {$tytul} oraz {$tresc}. Na początek to wystarczy, choć oczywiście nic nie stoi na przeszkodzie, żeby było ich więcej a nawet znacznie więcej. Po stworzeniu szablony czas na napisanie skryptu, który będzie nadawał tym znacznikom pożądane przez nas wartości. Skrypt należy zapisać w głównym katalogu projektu.
Zawartość najprostszego skryptu realizującego to zadanie przedstawiona została na poniższym listingu:

<?
include('Smarty.class.php');
$szablon = new Smarty;
$szablon->assign('tytul', 'Pierwszy w życiu szablon smarty');
$szablon->assign('tresc', 'Hello Word!');
$szablon->display('hello.tpl');
?>

Idea skryptu wykorzystującego szablon smarty jest prosta. Po zaimportowaniu biblioteki Smarty.class.php, tworzymy obiekt klasy Smarty o nazwie $szablon. Następnie przypisujemy wartości do znaczników za pomocą metody assign. Metoda ta jako pierwszy parametr przyjmuje nazwę znacznika (string) a jako drugi wartość lub nazwa zmiennej PHP lub wyrażenie matematyczne, jednym słowem to co ma zostać do znacznika przypisane. Po ustawieniu wartości wszystkich znaczników można przystąpić do przetwarzania szablonu poprzez wywołanie metody display, której argumentem jest nazwa szablonu, w naszym przypadku ‘hello.tpl’.

Niestety nie zawsze wszystko jest takie proste jak w opisanym przykładzie. Już na samym początku mogą pojawić się pewne problemy. Smarty używa stałej o nazwie SMARTY_DIR która jest ścieżką systemową katalogu z bibliotekami Smarty. Jeżeli skrypt potrafi znaleźć plik Smarty.class.php, zazwyczaj nie ma konieczności ustawiawiania SMARTY_DIR. Czasem jednak zachodzi konieczność zdefiniowania SARTY_DIR ręcznie.
Wtedy na początku skryptu należy wstawić następującą definicję:
w przypadku serwera Unix lub Linux:

define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');

W przypadku serwera Windows:

define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

Należy zwrócić uwagę na fakt, że stała SMARTY_DIR musi zawierać ostatni slash.

Wtedy też importujemy bibliotekę podając całą ścieżkę:

include(SMARTY_DIR.'Smarty.class.php');

Oczywiście nic nie stoi na przeszkodzie, zeby nie definiować stałej SMARTY_DIR a bezwzględną ścieżkę podać od razu w instrukcji include(). Osobiście jednak uważam takie postępowanie za nieeleganckie.

Ostatnim sposobem jest dodanie katalogu biblioteki do php_include path

Czasem zachodzi konieczność wskazania katalogów położenia głównych katalogów wykorzystywanych przez szablon smarty:

$szablon->template_dir = '/katalog/templates/';
$szablon->compile_dir = '/katalog/templates_c/';
$szablon->config_dir = '/katalog/configs/';
$szablon->cache_dir = '/katalog/cache/';

I to już wszystko jeśli chodzi o utworzenie pierwszego w życiu najprostszego szablonu smarty. Dalsze odcinki powstaną jak zacznę tworzyć i wykorzystywać kolejne szablony a przy okazji nabywać wiedzę w tej dziedzinie.

Leave a Reply

%d bloggers like this: