Wprowadzenie do Smarty – prosty system szablonów w PHP

Na początek odpowiedzmy sobie na pytanie czym jest system szablonów? Aktualnie głośno jest na temat oddzielania kodu HTML od skryptów PHP czy inaczej mówiąc warstwy prezentacji od logiki. To właśnie umożliwia system szablonów. Chciałbym się skupić na jednym konkretnym systemie który według mnie jest najlepszy z obecnie dostępnych w sieci. Oczywiście każdy sam może stworzyć swój własny system co umożliwia PHP, lecz korzystanie z gotowych rozwiązań jest o wiele wygodniejsze.

Zalety systemów szablonów:

  • Porządek w kodzie – HTML oddzielony od PHP.
  • Automatyzacja – wiele systemów szablonów udostępnia specjalne znaczniki, które w prosty sposób pozwalają zrealizować skomplikowane zadania.
  • Inna filozofia pracy – niektóre rzeczy łatwiej jest zrobić za pomocą systemu szablonów (np. obsługa formularzy).
  • System cache – zaawansowane systemy szablonów potrafią przechowywać w plikach cache generowane wyniki, co zmniejsza obciążenie serwera i umożliwia obsłużenie większego ruchu.
  • Inna organizacja pracy aplikacji WWW – dzięki systemom szablonów, nietrudno jest zbudować skrypt, który najpierw przetworzy wszystkie niezbędne dane, a dopiero na samym końcu zajmie się generowaniem wyniku HTML. Przy okazji umożliwia to większą dynamiczność aplikacji. Zauważmy bowiem, że przy wymieszanym kodzie HTML i PHP to, co już wysłaliśmy, jest wysłane i w razie jakichś problemów musimy zaakceptować ten smutny fakt. W przypadku systemu szablonów wystarczy jedynie zmienić szablon.
  • Webmaster nie musi znać PHP – w wielu firmach grafik oraz programista to dwaj zupełnie różni ludzie i nie jest wcale powiedziane, iż muszą oni znać nawzajem swoje profesje. Dla webmastera tworzącego kod HTML zawiłości PHP mogą być trudne do przeskoczenia. Warstwa abstrakcji w postaci systemu szablonów separuje go od tego, oddając w jego ręce łatwy do zrozumienia zestaw narzędzi( źródło wikibooks).

  • Krótko o Smarty
    Smarty jest darmowym systemem szablonów (ang. template engine) do pobrania ze strony smarty.net . Aby móc z niego korzystać musimy najpierw odpowiednio się do tego przygotować.
    1.Pobieramy ze strony http://www.smarty.net najnowszą wersje systemu Smarty (na dzień 23.03.10 jest to wersja 2.6.26).
    2.Do katalogu gdzie będzie znajdować się nasza strona kopiujemy katalog libs.
    3. Tworzymy katalogi templates , templastes_c, cache oraz configs.
    4.Aby załadować bibliotekę do naszej aplikacji, dołączamy plik Smarty.class.php np.

    1
    require './libs/Smarty.class.php';

    Swoje pliki szablonów będziemy trzymać w katalogu templates natomiast katalog templates_c służy do przechowywania plików cache naszego szablonu. Katalog ten musi mieć uprawnienia 777 na serwerze. Pliki szablonów będą miały rozszerzenie tpl. Na początek prosty szablon pokazujący jak korzystać ze smarty. Utwórzmy trzy pliki w katalogu templates – header.tpl , index.tpl, footer.tpl. Poniżej kody poszczególnych plików:

    header.tpl

    1
    2
    3
    4
    5
    6
    7
    8
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>{$title}</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>

    W tym pliku jak widać mamy cały typowy nagłówek pliku HTML. Umieszczamy tutaj wszystko co chcemy aby znalazło się w znacznikach tak jak w zwykłej stronie HTML.

    index.tpl

    1
    Hello world! Dzisiaj jest {$data}!

    To jest fragment strony który znajduje się w środku znacznika . Wyświetli nam tekst Hello World! Dzisiaj jest oraz nasza aktualną datę. {$data} oznacza, że w tym miejscu pojawi się zawartość zmiennej $data którą zadeklarowaliśmy w pliku index.php.

    footer.tpl

    1
    2
    </Body>
    </HTML>

    Tutaj chyba nie trzeba opisywać. Zakończenie rozpoczętych znaczników.Teraz przyszła kolej aby utworzyć plik php który powie nam jak korzystać z naszego szablonu. Plik index.php umieszczamy w katalogu głównym naszej strony.

    index.php

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    require 'libs/Smarty.class.php';

    $smarty = new Smarty;

    $smarty-> assign('data', date('d.m.Y'));
    $smarty->display('index.tpl');
    ?>

    $smarty-> assign(‘data’, date(‘d.m.Y’)) tym poleceniem utworzyliśmy zmienną $data w której jest przechowywana aktualna data. Składnia tego polecenia to $smarty->assign($tpl_var, $value) gdzie $tpl_var oznacza nazwe zmiennej jaką chcemy przekazać do szablonu a $value to jej wartość.

    Tagi: , , ,

    2 komentarzy

    1. Również używam tego systemu szablonów. Jest on domyślnie zintegrowany w skrypcie SocialEngine. Podoba mi się, że logika strony jest oddzielona od warstwy prezentacyjnej. W szablonie umieszczony jest tylko czysty HTML i kilka znaczników SMARTY.

    2. Ciekawy skrypt ten SocialEngine, sam mam w planach napisać system społecznościowy w języku asp.net, lecz do tego jeszcze długa droga.
      Wracając do smarty właśnie to jest cały sens stosowania tej biblioteki. Ułatwia bardzo projektowanie większych systemów i ich późniejszą edycje.

    Skomentuj