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> </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.
|