Strona główna


Smarty

Menu podręczne
Smarty - opis.

http://smarty.php.net/
Bardzo dobry system szablonów do PHP.

 
Parę ciekawych linków
www.phpsolmag.org
Jeżeli ktoś zajmuje się PHP to na pewno już zaprenumerował to czasopimo. Przynajmniej jeżeli jest początkujący w te klocki :-) Naprawde świetne pismo, szkoda tylko, że takie drogie.

www.kurshtml.boo.pl
Świetna strona dla wszystkich ludzi (i nie tylko) zainteresowanych pisaniem aplikacji dla Internetu. Kursy HTML, CSS, opisy znaczników, różne skrypty i generatory. Naprawdę świetna strona.

www.webinside.pl
Portal dla webmasterów, porady ogólne, skrypty, kursy, aktualności, darmowe grafiki, szablony i wiele innych ciekawych dla webmastera rzeczy.

www.cgi.csd.pl
Dużo ciekawych skryptów PHP, CGI, Perl oraz FAQ i porady na temat PHP, HTML, Apache itp. Warto looknąc.

www.webdeveloper.pl
Portal dla webmasterów. Całkiem spora kolekcja różnych materiałów. Też warto looknąć. Dwa poważne działy: Strefa developera (sporo różnych artykułów i porad) Dokumentacje (wykaz przydatnej dokum. o technologiach internetowych i nie tylko).

php.pl
Portal dla webmasterów, porady, skrypty, aktualności, artykuły i tłumaczenia. Między innymi obszerna dokumentacja frameworka Phiend. Całkiem fajna witrynka.

programista.net
Vortal dla programistów - głównie zbiór różnego rodzaju programów: kompilatorów, środowisk, edytorów, analizerów itp. programów potrzebnych mniej lub bardziej programiście.


  Smarty jest chyba najpopularniejszym systemem szablonów. Szablony jak sama nazwa wskazuje :-) służą do oddzielenia kodu PHP od elementów określających wygląd strony (najczęściej chodzi o HTML). Tak prowadzony projekt pozwala (przynajmniej w pewnym zakresie) rozdzielić prace programisty i projektanta strony - nawet jak jest to ta sama osoba :-)
Efekt działania Smarty można podziwiać na mojej stronie. Np. to co widzisz po lewej ("Menu podręczne" i "Parę ciekawych linków") to własnie szablon Smarty obsługiwany przez prosty skrypt w PHP. Podobnie wszystkie moje strony ze zdjęciami z mojego ukochanego miasteczka oraz strona ze zdjeciami przyrody to także Smarty w akcji.
Na początek parę linków które warto odwiedzić jeśli się chcę używać Smarty:
  • Bez samego Smarty się nie obejdzie. Najlepiej ściągnąć najnowszą wersję ze strony Smarty.
  • Świetne artykuły na temat Smarty można znaleźć na stronie Adama Majora w sekcji publikacje. Jeden z artykułów dotyczy także porównania różnych systemów szablonów. Można się więc zapoznać także z innymi rozwiązaniami.
  • Na stronie rzSeattle znajduje się obszerne tłumaczenie instrukcji do Smarty. Świetna rzecz - szczególnie jeśli ktoś nie zna angielskiego.
  • I w końcu strona Wiki o Smarty. Dużo artykułów, porad itp. głównie po angielsku.

Teraz parę słów o instalacji.
Instalacja jest bardzo prosta i sprowadza się do rozpakowania archiwum z biblioteką do stosownego katalogu. Powstanie struktura katalogów mniej więcej taka:
   Smarty
            |__/cache/
            |__/configs/
            |__/plugins/
            |__/templates/  (tutaj będziemy trzymać szablony)
            |__/templates_c/
            |___Config_File.class.php
            |___Smarty.class.php
            |___Smarty_Compiler.class.php
            |___debug.tpl

Katalogi templates_c/ i cache/ muszą mieć prawa zapisu dla usera na którego prawach działa serwer WWW. Gdzie umieścimy te strukturę zależy od tego jak bardzo możemy zarządzać serwerem WWW i jak to sobie zaplanujemy. Dobrze jest gdy struktura katalogów Smarty nie jest dostępna ze strony WWW. Ale gdy provider nie daje konta shelowego żeby sobie pobuszować po naszym serwerku to pliki i katalogi Smarty musimy umieścić w ramach naszego serwisu. Sposób tego umieszczenia też jest w sumie dowolny, chodzi tylko o to żeby PHP wiedział gdzie ma szukać klasy Smarty.class.php oraz gdzie ma stosowne katalogi (np. z szablonami). Można użyć do tego stałej SMARTY_DIR lub jeśli masz możliwość konfigurowania PHP (php.ini) to można zapodać stosowną ścieżkę do Smarty.class.php w include_path.
Moim zdaniem najlepiej jest umieścić katalog ze Smarty jako podkatalog w strukturze katalogów swojej strony (site'a) i napisać plik konfiguracyjny który będzie dołączany do każdego skryptu zamiast pliku Smarty.class.php
Przykład takiego pliku można sobie ściągnąć tutaj (smarty_setup)
lub zobaczyć poniżej.

<?PHP
include_once('Ścieżka_do_Smarty/Smarty.class.php');
class 
Smarty_Jasiu extends Smarty 
{
  function 
Smarty_Jasiu()
  { 
    
$this->Smarty();
    
$this->template_dir='Ścieżka_do_Smarty/templates/';
    
$this->compile_dir='Ścieżka_do_Smarty/templates_c/';
    
$this->config_dir='Ścieżka_do_Smarty/config/';
    
$this->cache_dir='Ścieżka_do_Smarty/cache/';
    
$this->caching=false;
    
$this->assign('app_name','Jasiu_WWW');
  }
}
?>


gdzie 'Ścieżka_do_Smarty' - to ścieżka do katalogu z klasą Smarty.class, w tym samym katalogu są także potrzebne podkatalogi.

Na początku pliku dołączam plik Smarty.class.php. Potem definiuję klasę powiedzmy Smarty_Jasiu będącą rozszerzeniem klasy Smarty. W konstruktorze klasy Smarty_Jasiu ustalam stosowne ścieżki. Żeby smarty wiedziało gdzie co ma. I to załatwia problem lokalizacji poszczególnych ścieżek potrzebnych Smarty. Ten pliczek instrukcją include_once dołączam na początku każdego pliku w którym chcę użyć szablonów.

Wykorzystanie szablonów Smarty
W jakimś rozsądnym edytorze piszę sobie szablon. Przykład można zassać tutaj (Szablon) lub zobaczyć poniżej.

<!-- ---------------------------- -->
<TR> 
<TD ALIGN="CENTER" VALIGN="MIDDLE">

<BR><BR>
<H2>
{$tytul}
</H2>

<BR>
<P STYLE="font-size: 12pt; 
   text-align: justify; 
   font-weight: bold; 
   line-height: 16pt">
{$opis01}
</P>

<BR><BR>
<TABLE ALIGN="CENTER" WIDTH="745" 
       CELLSPACING="0" CELLPADDING="20" 
       BORDER="0">

{section name=komorka loop=$ilosc_zdjec}
{if $smarty.section.komorka.index is even}
  <TR>
{/if}
<TD>
<A HREF="#tutaj{$smarty.section.komorka.index}" 
   NAME="tutaj{$smarty.section.komorka.index}">
<IMG SRC="{$tab[komorka.index][0]}"  
     WIDTH="320" HEIGHT="240" 
     BORDER="0" 
     ALT="{$tab[komorka.index][1]}" 
     onclick="window=window.open('
                {$tab[komorka.index][2]}',
                'secWin','width= 820,height=620')">
</A>
</TD> 
{if $smarty.section.komorka.index==$ilosc_zdjec
     and $smarty.section.komorka.index is even}
   <TD>&nbsp;</TD>
{/if}
{if $smarty.section.komorka.index is odd}
  </TR>
{/if}
{/section}
</TABLE>
<P STYLE="font-size: 10pt; 
   text-align: justify; line-height: 12pt">
Umieszczone na tej stronie zdjęcia są moją 
własnością. Zezwalam na wykorzystanie tych 
zdjęć w dowolnych publikacjach pod warunkiem 
pozostawienia na nich informacji o moim 
autorstwie lub podania odnośnika do mojej 
strony jako autora tych zdjęć.<BR> 
Zdjęcia zrobione są aparacikiem Vivitar 
ViviCam 3640 i podrasowane programem Gimp.
</P> 

</TD>
</TR>
<!-- ---------------------------- -->


Plik ten jak żywo przypomina kod HTML z jakimiś wstawkami. I tak jest w rzeczywistości. W kodzie HTML można zauważyć wstawki ograniczone znakami {   } - są to znaczniki Smarty. Więcej na temat znaczników można przeczytać na stronie Adama Majora a szczególnie na stronie rzSeattle gdzie znajduje się dość szczegółowe tłumaczenie dokumentacji. Celem wyjaśnienia napiszę tylko, że cały szablon to jedna komórka większej tabelki (tak po prostu mam zorganizowaną tę stronę). Tabelka gdzie pierwszy wiersz to nagłówek, drugi to ciało strony (to ten mój szablon) a trzeci wiersz to stopka.
Strasznie nie chce mi się opisywać konstrukcji znaczników Smarty tym bardziej, że inni zrobili to znacznie lepiej (patrz wyżej). Brakuje mi chyba talentów literackich i samozaparcia. Napiszę tylko, że aby złapać o co chodzi trzeba zapoznać się ze znacznikiem
    {section .....}
    {/section}
.
i ze znacznikami warunkowymi. Proste konstrukcje typu {$zmienna} są intuicyjne i dość szybko się łapie jak działają. Żeby więcej nie przeciągać przejdźmy do prostego skryptu. Można go sobie zassać tutaj (Skrypt) lub obejrzeć poniżej.

<?PHP
include_once('gora.php');
include_once(
'smarty_setup.php');
$smarty = new Smarty_Jasiu;
  
$smarty->assign('tytul','Przyroda okolic Zawadzkiego.');
$smarty->assign('opis01','Robaczki, ptaszki, 
                 kwiatuszki i różne cuda przyrody.'
); 

$tab=array( array("./kwiat01s.jpg",
                  
"Chaber bławatek.",
                  
"./kwiat01b.jpg"),
            array(
"./kwiat02s.jpg",
                  
"Jakiś krzaczek na moim podwórku:-).",
                   
"./kwiat02b.jpg"),
            array(
"./ptaszek01s.jpg",
                  
"Trznadel odpoczywy po zderzeniu z domem.",
                  
"./ptaszek01b.jpg"),
            array(
"./robaczek01s.jpg",
                  
"Ogrodnica niszczylistka.",
                  
"./robaczek01b.jpg"),
            array(
"./robaczek02s.jpg",
                  
"Biegacz złoty."
                  
"./robaczek02b.jpg"),    
            array(
"./spider01s.jpg"
                  
"Tygrzyk paskowany.",
                  
"./spider01b.jpg"),
            array(
"./spider02s.jpg",
                  
"Krzyżak ogrodowy.",
                  
"./spider02b.jpg"),
            array(
"./krajobraz01s.jpg",
                  
"Prywatny stawik.",
                  
"./krajobraz01b.jpg"),
            array(
"./krajobraz02s.jpg",
                  
"Łąka.",
                  
"./krajobraz02b.jpg"),
            array(
"./krajobraz03s.jpg",
                  
"UFO nad Zawadzkiem ;-).",
                  
"./krajobraz03b.jpg")    
           );
  
$ilosc_zdjec=count($tab);
$smarty->assign('tab',$tab);
$smarty->assign('ilosc_zdjec',$ilosc_zdjec);
$smarty->display('szablon.tpl');

include_once(
'dol.php');
?>


Skrypt ten jest podstawowym skryptem wyświetlającym całą stronę. Na początku więc dołączam skrypt nagłówkowy gora.php. Na końcu oczywiście dołączam skrypt stopki dol.php Następną instrukcją jest dołączenie klasy Smarty a właściwie klasy Smarty_Jasiu - za pomocą opisanego wyżej pliku konfiguracyjnego smarty_setup.php of course. Następnie nic nie pomoże tylko trzeba utworzyć obiekt o wymownej nazwie smarty klasy Smarty_Jasiu. Nazwa obiektu oczywiście może być prawie dowolna. Metoda assign wiąże zmienne Smarty ze zmiennymi PHP lub stałymi. Zmienne Smarty i zmienne PHP mogą się nazywać tak samo. W skrypcie PHP różnica polega na tym, że w metodzie assign zmienne PHP jak to zmienne PHP są poprzedzone znakiem $ a zmienne Smarty nie :-) Zmienne tytul i opis01 to zmienne tekstowe i w szblonie są po prostu wyświetlane. Zmienna tab to tablica dwuwymiarowa zawierająca opis obrazków do wyświetlania. Każdy wiersz to jeden obrazek. Po kolei: adres małego obrazka, opis (dymek), adres dużego obrazka. Zmienna ilosc_zdjec jak sama nazwa wskazuje podaje ilość wierszy tabelki tab czyli ni mniej ni więcej tylko ilość zdjęć do wyświetlenia. Obie zmienne są potrzebne do przetworzenia w znaczniku {section}. Efekt można podziwiać tutaj.
Po wywołaniach metod assign przekazujących zmienne tab i ilosc_zdjec do szablonu, za pomocą metody display odpalamy szablon. I to w zasadzie tyle. Jeżeli ktoś się trochę zawiodł, bo nie znalazł prostych odpowiedzi na trudne pytania to zachęcam go, żeby przeczytał opracowania mądrzejszych ode mnie (w zakresie Smarty oczywiście) i później przeanalizował skrypt i szablon. W zestawie tym (moim zdaniem oczywiście) zawarte jest 90% wiedzy potrzebnej początkującemu projektantowi stron który chce używać Smarty.

  Data ostatniej modyfikacji: 2004-07-13    

Licznik odwiedzin
Made by Jasiu © 2003-2016