Smarty – system szablonów dla PHP

Smarty – system szablonów dla PHP, który pozwala oddzielić kod PHP od HTML. Daje on ogromne możliwości i jest niesamowitym ułatwieniem nie tylko dla programisty, ale również dla grafika itp. W dużych firmach szablony Smarty to podstawa.

Wyobraźmy sobie, ze chcemy stworzyć system, który będzie wyposażony w skorki. Dzięki Smarty możemy stworzyć nieograniczona liczbę skorek, które będą odpowiednio obrabiały dane zwrócone przez system. W tym systemie szablonów są zaimplementowane niemalże wszystkie potrzebne elementy programowania (pętle, warunki itd), aby można było dostosować do swoich potrzeb dany szablon. Dodatkowo w Smarty można tez pisać PHP, jeśli ktoś ma taka potrzebę.
Załóżmy, ze potrzebujemy wypisać menu w liście punktowanej na podstawie danych z sytemu. Dane zostały już załadowane do Smarty i sa przechowywane w zmiennej $dane. Możemy do tego celu użyć zwykłej pętli Section (odpowiednik for) lub pętli Foreach (tej pętli używam najczęściej). Oto zawartość szablonu Smarty odpowiedzialna za menu:

<ul>
  {foreach from=$dane item=wiersz}
    <li>
      <a title="{$wiersz.artykul_tytul}" href="{$wiersz.artykul_przyjazny_link}.html">{$wiersz.artykul_tytul}</a>
    </li>
  {foreachelse}
    <li>Brak elementów menu</li>
  {/foreach}
</ul>

Na powyższym przykładzie można znaleźć pewne zależności:

  1. Tagi Smarty sa trzymane w nawiasach klamrowych. Jeśli potrzebujemy użyć w szablonach tych nawiasów, to mamy na to dwa sposoby:
    • cały kod, którego Smarty ma nie interpretować zamykamy w tagach {literal} {/literal} lub
    • zamiast nawiasów klamrowych używamy {ldelim} i {rdelim}

    Wybór metody zależy od potrzeby w danym momencie. Jeśli mamy do napisania np duży kawałek kodu w JavaScript, to wybieramy pierwszy sposób. Natomiast jeśli potrzebujemy zestylizowac jakiś 1 element w stylach, to wybieramy ten drugi sposób. Wszystko zależy od ilości nawiasów klamrowych, których będziemy używać. Musimy pamiętać tez o jednej rzeczy. Smarty maja możliwość minimalizowania kodu tzn usuwania wszystkich wciec, znaków końca linii itp (kod który chcemy zminimalizować zamykamy w tagach {strip} {/strip} ). To co znajduje się w pomiędzy tagami {literal}, nie zostanie zminimalizowane.

  2. W przykładzie zastosowania pętli foreach użyłem tagu {foreachelse}. Jest on odpowiednikiem instrukcji else stosowanej w warunkach. Jeśli w zmiennej nie ma danych, to pokaże się to co jest pomiędzy {foreachelse} a {/foreach}
  3. Tagi Smarty zamyka się podobnie jak tagi HTML, czyli używając znaku slash {if} {elseif} {else} {/if} {section} {sectionelse} {/section} {foreach} {foreachelse} {/foreach} itd.

Jeśli chodzi o używanie PHP w szablonach Smarty, to musimy pamiętać o pewnych zasadach:

  • Kod PHP zamykamy w tagach {php} {/php}
  • Smarty swoje zmienne trzyma w tablicy _tpl_vars indeksowanej nazwami zmiennych. Załóżmy, ze mamy stworzone Smarty w zmiennej smarty. Aby dostać się do zmiennej Smarty $dane, musimy użyć składni
    $GLOBALS['smarty']->_tpl_vars['dane']

Jednak nie potrzeba używać PHP, żeby przypisać w Smarty daną wartość wybranej zmiennej:

{assign var=jakas_zmienna value='jakaś wartość'}

Jak by tego było mało, możemy inkludowac jeden szablon Smarty w drugim:

{include file="szablon2.tpl"}

Domyślnym rozszerzeniem szablonów jest rozszerzenie .tpl . W artykule „Programy do tworzenia stron internetowych cz. 1 – Notepad++” pisałem o jednym z najlepszych edytorów jaki znam. Do tego programu napisałem dodatek z kolorowaniem składni dla Smarty. Jeśli ktoś będzie potrzebował takie cudo, to piszcie do mnie na maila. Chętnie się tym podzielę.

Jak widzieliście na paru przykładach, Smarty jest bardzo łatwe w obsłudze i zaimplementowaniu. Nie ma tutaj wiele do nauki i każdy może się tego szybko nauczyć. Jak już pisałem wcześniej, jest to nieocenione w pracy, a i przyszli pracodawcy na pewno docenią znajomość tego systemu szablonów.

Twitter Obserwuj mnie na Blip.pl 

Dodaj komentarz

Twój komentarz

CommentLuv badge