L eszek Sewastianowicz P odstawy systemu szablonów Smarty 1 www.serwan.pl



Podobne dokumenty
Kompozycja Proceduralna

Laboratorium 6 Tworzenie bloga w Zend Framework

Instalacja i uruchomienie Na stronie domowej projektu Smarty znajdziemy między innymi dokumentację oraz najnowszą wersję oprogramowania.

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Smarty PHP. Leksykon kieszonkowy

HTML (HyperText Markup Language) hipertekstowy język znaczników

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Podstawy JavaScript ćwiczenia

Oczywiście plik musi mieć rozszerzenie *.php

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

PHP: bloki kodu, tablice, obiekty i formularze

Programowanie internetowe

Szablon główny (plik guestbook.php) będzie miał postać:

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Sylabus Moduł 2: Przetwarzanie tekstów

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Laboratorium 1 Wprowadzenie do PHP

Tworzenie Stron Internetowych. odcinek 10

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

SSK - Techniki Internetowe

2 Podstawy tworzenia stron internetowych

1 Podstawy c++ w pigułce.

I.Wojnicki, Tech.Inter.

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Cw.12 JAVAScript w dokumentach HTML

rk HTML 4 a 5 różnice

Aplikacje WWW - laboratorium

Wykład 1: HTML (XHTML) Michał Drabik

Specyfikacja techniczna dot. mailingów HTML

Tworzenie Stron Internetowych. odcinek 5

KATEGORIA OBSZAR WIEDZY

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Pierwsza strona internetowa

Struktura języka HTML ZNACZNIKI. Oto bardzo prosta strona WWW wyświetlona w przeglądarce: A tak wygląda kod źródłowy takiej strony:

Facelets ViewHandler

Bazy Danych i Usługi Sieciowe

Podstawowe wykorzystanie Hibernate

Oczywiście występują także znaczniki, bez ich odpowiednika kończącego, np. <BR>

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Poszczególne elementy serwisu można umieścić dla porządku w odpowiednio przemyślanym drzewie katalogów, i tak: -

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

29. Poprawność składniowa i strukturalna dokumentu XML

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Podstawy programowania skrót z wykładów:

O stronach www, html itp..

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 6.0

URL:

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

WPROWADZENIE. Użycie PHP

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

DTD - encje ogólne i parametryczne, przestrzenie nazw

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

2017/2018 WGGiOS AGH. LibreOffice Base

media Blitz wydajne sytemy szablonów

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

14. POZOSTAŁE CIEKAWE FUNKCJE

JAVAScript w dokumentach HTML (1)

1 Podstawy c++ w pigułce.

Podstawy Programowania C++

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Napisy w PHP. Drukowanie napisów instrukcją echo

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawy (X)HTML i CSS

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Dokumentacja imapliteapi

Wykład 2 TINT. XHTML tabele i ramki. Zofia Kruczkiewicz

Język (X)HTML. Podstawowe znaczniki i parametry. dr Konrad Dominas / UAM

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Odnośniki jeszcze do niedawna odróżniały strony WWW od wszystkich innych dokumentów elektronicznych. Możliwość deklarowania odnośników do innych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Backend Administratora

ZMIENNE. Podstawy PHP

Aplikacje WWW - laboratorium

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Zajęcia 6 pliki tekstowe

Witryny i aplikacje internetowe

Zasady programowania Dokumentacja

Aplikacje WWW - laboratorium

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Szczegółowy opis zamówienia:

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

ECDL/ICDL Zaawansowane przetwarzanie tekstów Moduł A1 Sylabus, wersja 2.0

Tablica zawierająca odniesienia do znajdujących się w dokumencie obiektów typu Anchor.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Spis treści OPIS PLIKU W FORMACIE CSV Z DANYMI PPE LUB EP 1

Krótki kurs JavaScript

Transkrypt:

1 www.serwan.pl

Copyright 2009 Leszek Sewastianowicz wszelkie prawa zastrzeżone trener@serwan.pl www.serwan.pl

Spis treści Wprowadzenie do systemu szablonów Smarty...3 Instalacja...3 Komentarze...3 Przekazywanie i wyświetlanie zmiennych oraz tablic w szablonie...4 Modyfikatory zmiennych...4 Mieszanie modyfikatorów...7 Pętla {foreach}{/foreach}...7 Pętla {section}, {sectionelse}...9 Dolączanie plików...13 Instrukcje warunkowe...14 Sprawdzenie czy zmienna istnieje...15 Sprawdzenie czy zmienna jest tablicą...15 Wyświetlanie symboli ograniczających { i }...15 Pomijanie interpretacji Smarty...16 Osadzanie kodu PHP w szablonie...16 Usuwanie białych znaków z kodu...16 O autorze...17 2 www.serwan.pl

Wprowadzenie do systemu szablonów Smarty Smarty jest obiektową biblioteką systemu szablonów dla php. System szablonów pozwala na oddzielenie warstwy logiki od warstwy prezentacji aplikacji internetowej. Smarty działa poprzez umieszczanie w szablonach znaczników, które następnie są zastępowane generowaną przez warstwę logiki treścią. W szablonie można stosować struktur kontrolne (pętle, instrukcje warunkowe). System Smarty odznacza się wysoką wydajnością dzięki kompilowaniu szablonów do postaci skryptów php i buforowaniu. Instalacja Instalacja biblioteki Smarty sprowadza się do umieszczenia plików biblioteki na serwerze i wstawieniu do kodu php linii: require_once('smarty-2.6.22/libs/smarty.class.php'); Następnie tworzymy obiekt $smarty i konfigurujemy go. $smarty = new Smarty(); $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates/compile/'; $smarty->cache_dir = './templates/cache/'; $smarty->caching = false; $smarty->error_reporting = E_ALL; Kolejno ustawiamy ścieżkę do katalogów z szablonami, z szablonami skompilowanymi i do bufora. Następnie zaznaczamy opcje dotyczące buforowania i wyświetlania błędów. Komentarze Ogranicznikami komentarzy w szablonach Smarty są {* i *}. Między tymi symbolami można umieścić jedną lub więcej linii tekstu. Komentarze Smarty nie są wysyłane do przeglądarki {* Komentarz w jednej linii *} {* Komentarz w wielu liniach *} 3 www.serwan.pl

Przekazywanie i wyświetlanie zmiennych oraz tablic w szablonie Zmienne i instrukcje Smarty do szablonu wstawiamy w ogranicznikach. Domyślnie są to { i }. nawiasy klamrowe. $smarty->assign('tytul', 'Przykład'); $smarty->assign('tresc', $tresc); $smarty->assign('uzytkownik', $uzytkownik); $smarty->display('index.tpl'); Metoda assign służy do przekazywania zawartości do zmiennych szablonu. Natomiast metoda display() powoduje wczytanie wybranego szablonu. index.tpl Zmienne w szablonach Smarty, podobnie jak w php poprzedzone są symbolem $. Można odwoływać się przez nie również do elementów tablic, a także pól i metod obiektów. {$towar[2]} {* wyświetli trzeci element tablicy $towar podobnie jak w PHP $towar[2] *} {$towar.cena} {* wyświetli element tablicy $towar wskazywany przez klucz cena podobnie jak w PHP $towar['cena'] *} {$towar.$kategoria} {* wyświetli element tablicy $login wskazany przez klucz przekazany w zmiennej $kategoria podobnie jak w PHP $towar[$kategoria] *} {$uzytkownik->login} $uzytkownik *} {* wyświetli pole login z obiektu {$uzytkownik->info()} {* wyświetli wynik zwrócony przez metodę info() obiektu $uzytkownik *} Modyfikatory zmiennych Modyfikatory zmiennych mogą być stosowane do zmiennych, zdefiniowanych funkcji albo ciągów znaków. Nazwę modyfikator podaje się po znaku umieszczonym za zmienną, którą modyfikuje. Modyfikator może akceptować dodatkowe parametry określające jego zachowanie. Te parametry podaje się za nazwą modyfikatora i oddzielając je przez znak : $wybrana_cena==$element strip:'_' Do najczęściej wykorzystywanych modyfikatorów należą: 4 www.serwan.pl

capitalize - zmieniania pierwszą literę każdego słowa w zmiennej na dużą. cat - dodaje ciąg znaków na końcu zmiennej. {$artykul cat:' <span class= green >nowość</span>'} count_characters - zlicza ilość znaków w podanej zmiennej. Dodanie parametru true powoduje wliczanie spacji do całkowitej liczby znaków. {$akapit count_characters:true} count_paragraphs - zlicza liczbę akapitów w zmiennej. count_sentences - zlicza ilość zdań w zmiennej. count_words - zlicza ilość wyrazów w zmiennej. date_format - formatuje datę i czas do podanego w parametrze formatu. Data może zostać przekazana do Smarty jako uniksowe timestamps, mysql timestamps lub przez dowolny ciąg znaków złożony z miesiąca dnia roku (możliwego do sparsowania przez strtotime()). Jeżeli format nie jest określony, stosowany jest domyślny. {$smarty.now date_format} {$smarty.now date_format:"%a, %B %e, %Y"} {$smarty.now date_format:"%h:%m:%s"} Symbole używane do formatowania %a skrót dnia tygodnia (wartość zlokalizowana) %A pełna nazwa dnia tygodnia (wartość zlokalizowana) %b skrót nazwy miesiąca (wartość zlokalizowana) %B pełna nazwa miesiąca (wartość zlokalizowana) %c preferowany format daty i czasu dla bieżącej lokalizacji %d dzień miesiąca jako liczba z zakresu 00-31 %D to samo co %m/%d/%y %e dzień miesiąca jako liczba z zakresu 1-31 %h to samo co %b %H godzina w zakresie 00-23 %I godzina w zakresie 01-12 %j dzień roku z zakresu 001-366 %l godzina w zakresie 1-12 5 www.serwan.pl

default - %m miesiąc w zakresie 01-12 %M minuty %n znak nowej linii (ignorowany przez przeglądarki, ale widoczny w kodzie strony) %r to samo co %I:%M:%S %R to samo co %H:%M %S sekundy %t tabulator %T to samo co %H:%M:%S %U numer tygodnia w roku, pierwsza niedziela w roku jest liczona jako pierwszy dzień pierwszego tygodnia roku. %w dzień tygodnia jako liczba z zakresu 0-6. Niedziela oznaczana jako 0. %W numer tygodnia w roku, pierwszy poniedziałek w roku jest liczona jako pierwszy dzień pierwszego tygodnia roku. %x preferowany format daty dla bieżącej lokalizacji %X preferowany format czasu dla bieżącej lokalizacji %y rok jako liczba z zakresu 00-99 %Y pełny rok %Z nazwa strefy czasowej %% symbol % używany do nadania zmiennej wartości domyślnej. Jeśli zmienna jest pusta lub nie zdefiniowana wyświetlana jest wartość domyślna. Default wymaga jednego argumentu. {$tytul default:"no title"} lower - używany do zmiany wszystkich liter na małe. nl2br - zamienia wszystkie łamania linii (entery) w zmiennej na znaczniki <br />. Jest to ekwiwalent funkcji PHP - nl2br(). replace - szuka w zmiennej ciągu znaków podanego w pierwszym parametrze i zastępuje go ciągiem z drugiego parametru. Obydwa parametry są wymagane. {$nazwapliku replace:" ":"_"} spacify - umożliwia wstawienie spacji pomiędzy każdym znakiem w zmiennej. Opcjonalnie można podać inny znak (lub ciąg znaków) do wstawienia. {$tytul spacify} 6 www.serwan.pl

{$opis spacify:" * "} strip - zastępuje wszystkie powtarzające się spacje, łamanie linii i tabulatory pojedynczą spacją, albo podanym ciągiem znaków. {$opis strip} {$articletitle strip:", "} strip_tags - usuwa znaczniki html ze zmiennej. truncate - obcina zmienną do podanej w pierwszym parametrze długości (domyślnie do 80 znaków). Jako opcjonalny drugi parametr można podać ciąg znaków wyświetlanych na końcu obciętej zmiennej. Znaki w podanym ciągu znaków są wliczone do oryginalnej długości przycinania. Domyślnie, obcięcie następuje przy końcu ostatniego słowa. Aby tekst został obcięty dokładnie do podanej długości, należy podać w trzecim parametrze wartość true. {$akapit truncate} {$akapit truncate:70} {$akapit truncate:70:""} {$akapit truncate:70:"..."} {$akapit truncate:70:"":true} {$akapit truncate:70:"...":true} upper - używany jest do zwiększenia wszystkich liter w zmiennej na duże. Mieszanie modyfikatorów Można podać dowolną ilość modyfikatorów do zmiennej. Każdy z nich powinien być oddzielony znakiem. Modyfikatory będą wykonywane w kolejności wstawiania. {$akapit truncate:70:"...":true capitalize} Pętla {foreach}{/foreach} Do wstawiania danych z tablic służy pętla foreach. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> 7 www.serwan.pl

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>{$tytul}</title> <script type="text/javascript" src="jquery-1.2.3.js"></script> <script type="text/javascript" src="skrypt.js"></script > </head> <body> <p>{$tresc}</p> <table id="znajomi"> <tbody> {foreach from=$znajomi item=znajomy} <tr> <td>{$znajomy.login}</td> <td><a href="/zapros/ {$znajomy.id}">zaproś</a></td> <td><a href="/wyslij/ {$znajomy.id}">wyślij</a><td> </tbody> </table> </body> </html> </tr> {/foreach} Pętla foreach jest używana do wyświetlania tablicy. Tagi foreach muszą być zakończone tagami /foreach. Pętla może posiadać cztery parametry: from, item, key i name z czego dwa pierwsze są wymagane. W parametrze from podajemy nazwę zmiennej tablicowej do wyświetlenia, w item nazwę zmiennej zawierającej bierzący element tablicy wewnątrz pętli. W przypadku tablic 8 www.serwan.pl

asocjacyjnych możemy użyć parametru key, w którym podajemy nazwę zmiennej zawierającej nazwę bierzącego klucza tablicy. Parametr name służy do rozróżnienia poszczególnych pętli w przypadku ich zagnieżdżania. Nazwa tego parametru jest dowolna (zbudowana z liter, cyfr i podkreślników). Nazwa zagnieżdżonej pętli foreach musi być unikalna - różnić się od każdej innej nazwy foreach. Zmienna from będzie w pętli foreach dopuki nie skończą się elemęty tablicy. foreachelse jest wykonywana wtedy jeżeli nie ma wartości w zmiennej from. Nazwa parametru Typ Wymagany Domyślnie Opis from string tak brak item string tak brak key string nie brak Nazwa zmiennej tablicowej przetwarzanej przez pętlę. Nazwa zmiennej zawierającej element tablicy w danym przebiegu pętli. Nazwa zmiennej zawierającej klucz elementu tablicy w danym przebiegu pętli. name string nie brak Nazwa pętli udostępniająca jej właściwości. Pętla {section}, {sectionelse} Pętla section jest bardziej od foreach rozbudowaną konstrukcją pozwalającą przetwarzać tablice z danymi. Wszystkie znaczniki {section} muszą być zakończone przez znaczniki. Pętla section posiada dwa parametry obowiązkowe. Są to name i loop. Parametr name jest nazwą sekcji i może być złożona z liter, cyfr i znaków podkreślenia. Parametrem loop jest zmienna zawierająca zwykle tablicę wartości. Ilość elementów tablicy decyduje o liczbie przebiegów pętli. Element tablicy jest wyświetlany poprzez podanie zmiennej, a następnie w nawiasach kwadratowych nazwy pętli. W przypadku gdy zmienna podana do pętli jest pusta lub nie istnieje, wyświetlone zostaną dane umieszczone po {sectionelse}. {section loop=$tab name=liczby} {$tab[liczby]}, {sectionelse} Brak elementów do wyświetlenia Pętla może rozpocząć przetwarzanie tablicy od dowolnego elementu. W tym celu należy podać w parametrze start odpowiedni numer elementu tablicy. Elementy tablicy indeksowane są od zera. {section loop=$tab name=liczby start=2} {$tab[liczby]}, 9 www.serwan.pl

Pętla może przetwarzać elementy w pewnych odstępach np. co trzeci. Odstęp podajemy w parametrze step. {section loop=$tab name=liczby start=2 step=3} {$tab[liczby]}, Można ograniczyć liczbę przebiegów pętli. Liczbę przebiegów pętli określa marametr max. {section loop=$tab name=liczby start=2 max=5} {$tab[liczby]}, Aby ukryć pętlę bez usuwania jej kodu należy zastosować parametr show z wartością false. {section loop=$tab name=liczby start=2 max=2 show=false} {$tab[liczby]}, W jednej pętli można wyświetlać kolejne elementy z wielu tablic. {section loop=$tab1 name=liczby start=3} {$tab1[liczby]}, {$tab2[liczby]}. <br /> Pętle można w sobie zagnieżdżać z zastrzeżeniem, że nazwa sekcji zagnieżdżonych musi być unikalna dla każdej sekcji. {section loop=$tab name=liczby} {$tab[liczby]}, {section loop=$tab2[liczby] name=liczby2} - {$tab2[liczby][liczby2]}. <br /> W pętli section można też przetwarzać wielowymiarowe tablice asocjacyjne. Klucz wybranej komórki umieszcza się wówczas po kropce. 10 www.serwan.pl

{section loop=$tab name=liczby} {$tab[liczby]} /<br /> Symbol: {$tab2[liczby].symbol}<br /> Wartość: {$tab2[liczby].wartosc}<br /><br /> Nazwa parametru Typ Wymagan y Domyślni e name string tak brak Nazwa sekcji. loop [$variable_n ame] tak start integer nie 0 step integer nie 1 brak Opis Nazwa zmiennej tablicowej przetwarzanej przez pętlę. Indeks elementu tablicy, od którego ma zostać rozpoczęte przetwarzanie tablicy. Jeśli nie została podany, przetwarzanie rozpocznie się od początku tablicy. Krok z jakim będą pobierane elementy tablicy. max integer nie 1 Maksymalna ilość przebiegów pętli. show boolean nie true Pozwala na wyświetlanie i ukrywanie działania pętli. Pętle section posiadają swoje własne zmienne przechowujące różne ich właściwości. Są one dostępne poprzez zapis: {$smarty.section.nazwapętli.nazwawłaściwości}. index - zawiera aktualny numer elementu tablicy w bieżącym przebiegu pętli, pierwszy przebieg ma numer 0 albo podany w atrybucie start i jego wartość wzrasta o jeden albo o wartość podaną w atrybucie step. {section loop=$tab name=liczby} {$smarty.section.liczby.index} - {$tab[liczby]}<br /> index_prev - zawiera numer elementu tablicy z poprzedniego przebiegu pętli, przy pierwszym przebiegu jest to wartość -1. 11 www.serwan.pl

{section loop=$tab name=liczby} Poprzedni element: {$smarty.section.liczby.index_prev}<br /> {$tab[liczby]}<br /> index_next - zawiera numer elementu tablicy z następnego przebiegu pętli, przy ostatnim przebiegu jest to wartość większa od obecnego elementu o 1 lub wartość atrybutu step, jeśli jest podany. {section loop=$tab name=liczby} Poprzedni element: {$smarty.section.liczby.index_prev}<br /> {$tab[liczby]}<br /> Następny element: {$smarty.section.liczby.index_next}<br /> iteration - zawiera numer bieżącego przebiegu pętli. W przeciwieństwie do właściwości index rozpoczyna się od wartości 1 i jest niezależny od parametrów start i step. {section loop=$tab name=liczby} {$smarty.section.liczby.iteration} - {$tab[liczby]}<br /> first - ma wartość true jeżeli bieżący przebieg pętli jest pierwszym. last - ma wartość true jeżeli bieżący przebieg pętli jest ostatnim. rownum - jest aliasem iteration, działa identycznie loop - zawiera ostatni numer indeksu numer elementu tablicy, który został po ostatnim przebiegu pętli. Jest dostępny wewnątrz lub na zewnątrz pętli. 12 www.serwan.pl

{section loop=$tab name=liczby} {$smarty.section.liczby.index} - {$tab[liczby]}<br /> {$smarty.section.liczby.loop} show - zawiera wartość parametru schow wskazanej pętli section total - zawiera liczbę przebiegów jaką pętla wykonała lub ma wykonać. Jest dostępny wewnątrz lub na zewnątrz pętli. {section loop=$tab name=liczby} {$smarty.section.liczby.index} - {$tab[liczby]} / {$smarty.section.liczby.total}<br /> {$smarty.section.liczby.total} Dolączanie plików head.tpl <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>{$tytul}</title> <script type="text/javascript" src="jquery-1.2.3.js"></script> <script type="text/javascript" src="skrypt.js"></script > 13 www.serwan.pl

</head> index.tpl {include file='head.tpl'} <body> <p>{$tresc}</p> <table> {section name=tab loop=$uzytkownik} <tr> <td>{$uzytkownik[tab].imie}</td> <td>{$uzytkownik[tab].nazwisko}</td> <td>{$uzytkownik[tab].wiek}</td> </tr> </table> </body> </html> Stałe elementy szablonów możemy wyodrębnić w osobnych plikach i włączać je do szablonu poleceniem include. Instrukcje warunkowe index.tpl {include file='head.tpl'} <body> <p>{$tresc}</p> <table> {section name=tab loop=$uzytkownik} {if $smarty.section.tab.iteration>20} <tr> <td>{$smarty.section.tab.iteration}</td> <td>{$uzytkownik[tab].imie}</td> <td>{$uzytkownik[tab].nazwisko}</td> <td>{$uzytkownik[tab].wiek}</td> 14 www.serwan.pl

</tr> {/if} </table> </body> </html> Blok wykonywany warunkowo w szablonach smarty musi zawierać się pomiędzy symbolami {if }{/if} Sprawdzenie czy zmienna istnieje Do sprawdzenia czy zmienna została przekazana do szablonu służy funkcja isset(). Działa ona podobnie jak jej odpowiednik w PHP zwraca wartość logiczną true lub false. Stosuje się ją głównie w instrukcjach warunkowych. {if isset($tytul)} {/if} {$tytul} Sprawdzenie czy zmienna jest tablicą Do sprawdzenia czy zmienna jest tablicą służy funkcja is_array(). Działa ona podobnie jak jej odpowiednik w PHP zwraca wartość logiczną true lub false. Stosuje się ją głównie w instrukcjach warunkowych. {if is_array($item2)} {/if} <ul> {foreach from=$item2 item=item3} <li>{$item3}</li> {/foreach} </ul> Wyświetlanie symboli ograniczających { i } Do wyświetlania symboli { i } służą znaczniki {ldelim} i {rdelim}. System szablonów zawsze próbuje zinterpretować znaki ograniczające - więc jeżeli zachodzi potrzeba wyświetlenia ich, jest to najlepszy sposób. 15 www.serwan.pl

Pomijanie interpretacji Smarty Aby w bloku danych używać dowolnych znaków bez ich interpretowania przez system szablonów, należy zawrzeć go pomiędzy znacznikami {literal} i {literal}. Jest to użyteczne dla takich rzeczy jak sekcje javascript i css. {literal} <style type="text/css">.wp-polls.pollbar { } </style> {/literal} margin: 1px; font-size: 8px; line-height: 10px; height: 10px; background-image: url('pollbg.gif'); border: 1px solid #c8c8c8; Osadzanie kodu PHP w szablonie Do osadzania kodu PHP w szablonie służą znaczniki {php} i {/php}. {php} include('punkty.php'); {/php} Usuwanie białych znaków z kodu Formatując kod często stosuje się różnego rodzaju wcięcia i odstępy między liniami. Odstępy te są zachowane w kodzie wynikowym, ale przeglądarki redukują je do pojedynczej spacji. Aby pozbyć się tych znaków również z kodu źródła strony można odpowiedni fragment zawrzeć pomiędzy znacznikiem {strip} a {/strip} - wszelkie spacje, tabulatory i przejścia do nowego wiersza zostaną usunięte. 16 www.serwan.pl

{strip} <ul id="menu"> <li> <a href="/">oferta</a> <ul> <li><a href="xhtml">xhtml i CSS w praktyce</a></li> </ul> </li> <li> </li> {/strip} </ul> <li><a href="jquery">jquery w praktyce</a></li> <a href="kontakt">kontakt</a> O autorze Leszek Sewastianowicz trener programowania używający autorskiej metody nauki programowania skoncentrowanej na rozwiązania, egzaminator ECDL (European Computer Driving Licence), programista z 11 letnim stażem, redaktor biuletynu Sekrety Webmasterów, autor publikacji w Software Developer s Journal i Software Developer s Journal Kariera. Pracował dla m.in.: Towarzystwo Naukowe Organizacji i Kierownictwa, Zakład Kształcenia i Doradztwa Ekonomicznego, T-Matic Grupa Computer Plus, Synerway S.A. Projektował i programował strony internetowe, bazy danych oraz kluczowe aplikacje wspierające wewnętrzne procesy biznesowe firmy. Autor szkoleń: Zawodowy Webmaster czyli jak tworzyć profesjonalne strony WWW szkolenie wideo na DVD - szkolenie programowania profesjonalnych stron www z zastosowaniem technologii: XHTML, CSS, PHP, MySQL, JavaScript, jquery, Smarty i ADODB. W trakcie szkolenia, pod okiem doświadczonego trenera IT i programisty w jednej osobie, wykonasz samodzielnie 6 profesjonalnych stron www 17 www.serwan.pl

Zawodowy Webmaster czyli jak tworzyć profesjonalne strony WWW szkolenie wideo z dostępem przez Internet - szkolenie programowania profesjonalnych stron www z zastosowaniem technologii: XHTML, CSS, PHP, MySQL, JavaScript, jquery, Smarty i ADODB. W trakcie szkolenia, pod okiem doświadczonego trenera IT i programisty w jednej osobie, wykonasz samodzielnie 6 profesjonalnych stron www Jak profesjonalnie ciąć layout na stronę WWW szkolenie wideo z dostępem przez Internet Dzięki temu szkoleniu nauczysz się jak ciąć grafikę w programach graficznych i osadzać ją na stronie WWW, jak przygotować graficzne menu i ramki o atrakcyjnym wyglądzie Programowanie obiektowe w PHP szkolenie wideo z dostępem przez Internet Wyjątkowe szkolenie wideo, dzięki któremu nauczysz się krok po kroku programowania w PHP obiektowym na najwyższym poziomie Bazy danych w aplikacjach internetowych szkolenie wideo z dostępem przez Internet Cykl szkoleń Bazy danych w aplikacjach internetowych sprawi, że rozszerzysz swoje możliwości zawodowe, a strony i aplikacje internetowe, które wykonasz, będą bardziej funkcjonalne i atrakcyjne. Szkolenia Bazy danych w aplikacjach internetowych skupiają się na bazie MySQL, ale wiele poruszanych zagadnień dotyczy każdej relacyjnej bazy danych 18 www.serwan.pl