RkBlog

Hardware, programming and astronomy tutorials and reviews.

Smarty

Smarty to znany system szablonów o szerokich możliwościach. Polska dokumentacja dostępna jest pod tym adresem. Niniejszy artykuł będzie jej streszczeniem i wprowadzeniem do Smarty. Bibliotekę Smarty można pobrać ze strony smarty.net. Po rozpakowaniu przenosimy pliki na serwer, na katalog "demo" nadajemy chmod 777. Otwarcie w przeglądarce katalogu zawierającego pliki Smarty i przejście do katalogu "demo" powinno wyświetlić nam przykładową stronę. Jeżeli zobaczymy jakieś błędy to trzeba będzie je rozwiązać...

INSTALACJA - POTRZEBNE PLIKI
Z całej paczki potrzebujemy zawartość katalogu libs czyli:
Smarty.class.php
Smarty_Compiler.class.php
Config_File.class.php
debug.tpl
/internals/*.php
/plugins/*.php
Wskazane pliki przenieśmy do oddzielnego katalogu, w którym dodatkowo stworzymy plik index.php. Na początek umieszczamy w nim kod:
<?php
require_once('Smarty.class.php');
$smarty = new Smarty();
//smarty zostało zainicjowane
Otwarcie index.php powinno wyświetlić pustą stronę.

SZABLONY
Do index.php dodajemy kod:
<?php
// katalog szablonów
$smarty->template_dir = 'templates/';
// katalog na skompilowane szablony
$smarty->compile_dir = 'templates_c/';
// katalog na cache
$smarty->cache_dir = 'cache/';

$smarty->assign('name','Andrzej Lepper');

$smarty->display('index.tpl');
Oraz tworzymy trzy podane podkatalogi: templates, templates_c i cache, a następnie w katalogu templates tworzymy plik "index.tpl"
<?php
Witaj, {$name}!
Otwarcie index.php powinno wyświetlić Witaj, Andrzej Lepper!.
W powyższym przykładzie stworzyliśmy prosty szablon smarty - plik .tpl z jedną zmienną - {$name}. W pliku index.php podaliśmy podstawową konfigurację - ścieżki do katalogów na szablony, skompilowane szablony i cache. Smarty kompiluje dany szablon tak by za następnym razem skorzystać z gotowego kompilatu, co jest znacznie szybsze.

ZNACZNIKI W SZABLONIE
Komentarze
{* Tutaj treść komentarza *}
Komentarz zaczyna się od {* i kończy *}. Komentarze nie będą widoczne w wynikowym kodzie.
Zmienne
{$foo}        <-- wyswietla prostą zmienną (nie tablicę/obiekt)
{$foo[4]}     <-- wyswietla piąty element tablicy o indexowaniu zaczynającym sie od zera
{$foo.bar}    <-- wyswietla wartości tablicy dla indexu "bar", podobnie jak PHP $foo['bar']
{$foo.$bar}   <-- wyswietla wartości tablicy dla indexu zawartego w zmiennej, podobnie jak PHP $foo[$bar]
{$foo->bar}   <-- wyswietla własciwość "bar" obiektu "foo"
{$foo->bar()} <-- wyswietla zwróconą wartości przez metodę "bar"
{#foo#}       <-- wyswietla zmienną konfiguracyjną "foo"
Funkcje
Funkcje szablonów smarty wykonują jakieś czynności. Do dyspozycji mamy funkcje smarty oraz funkcje dodatkowe definiowane przez wtyczki (plugins). Lista funkcji przedstawione będzie w dalszej części artykułu. Przykład:
{include file="gora.tpl"}
Witaj, {$name}!
Funkcja include załącza plik szablonu (gora.tpl) w podanym miejscu.
{mailto address='smarty@example.com'}
Funkcja mailto wygeneruje kilkalny adres email podany jako atrybut "address".

ZMIENNE SPECJALNE SMARTY
Oto kilka zmiennych ze smarty:
{* wyświetli wartość podanej zmiennej _GET *}
{$smarty.get.nazwa_zmiennej}

{* wyświetli wartość podanej zmiennej _POST *}
{$smarty.post.nazwa_zmiennej}

{* wyświetli zawartość cookie o podanej nazwie *}
{$smarty.cookies.nazwa_cookie}

{* wyświetli wartość zmiennej systemowej "SERVER_NAME" *}
{$smarty.server.SERVER_NAME}

{* wyświetli wartość zmiennej systemowej "PATH" *}
{$smarty.env.PATH}

{* wyświetli wartość "session id" *}
{$smarty.session.id}

{* wyświetli znacznik czasu *}
{$smarty.now}
RkBlog

PHP w Akcji, 14 July 2008, Piotr Maliński

Comment article