PHP knihovny - Smarty IV

Další funkce šablonovacího systému, které nelze zařadit k řídícím strukturám, popsaným v minulém díle. Nejčastěji se jedná o funkce pro zpracování dat a jejich formátování. Jména všech vestavěných funkcí, které jsou zde popsány nelze použít při vlatní tvorbě nových funkcí v pluginech.

21.3.2005 15:00 | MaReK Olšavský | přečteno 12387×

capture

Funkce capture je párová, tj. uzavírá se do páru {capture} ... {/capture}. Slouží k odchycení bloku uzavřeného mezi těmito direktivami do proměnné, která je uvedena v parametru name. Blok se později zobrazuje pře Smarty proměnnou $smarty.capture.jmeno, kde jméno bylo definováno na počátku bloku capture v parametru name. Použití takto odchyceného bloku je například pro opakované části stránky (banner), jakkolivěk může být nevhodné jednu část na stránkách několikrát opakovat.

Parametry funkce caption jsou tyto:

Upozornění: je používáte cacheování a obsah (vkládaný pomocí příkazů {include} s {insert}), který nemá být cacheován, nebude stránka/šablona fungovat dle očekávání autora, proto není toto doporučeno.

fetch

Slouží k odchycení výstupu ze stránky či scriptu do proměnné. Jedná se v podstatě o dvě funkce. Jedna z nich pracuje na straně Smarty šablony a druhá je metoda, která se používá na straně PHP scriptu.

Fetch na straně PHP

Příkaz slouží k odchycení výstupu ze šablony do proměnné, místo zobrazení pomocí metody display. Použití je výhodné v případě, kdy jsou stránky tvořené systémem, že je k dispozici šablona, ve které je kompletní layout, včetně aktualit, navigace, reklamy,... a do jednoho z rámců (v tomto textu není cápán ve smyslu HTML frame, ale jako blok s určitým obsahem) je vkládán obsah té které konkrétní stránky. Vhodný postup poté je, že obsah měněného rámce je odchycen pomocí fetch do proměnné, tato proměnná je assignována k šabloně, v dalším kroku se provede display šablony s layoutem, ve které je v místě vložení obsahu hlavního rámce proměnná, do které byl v předchozím kroku přiřazen obsah pomocí fetch.

Fetch na straně Smarty

Fetch na straně šablony funguje ekvivalentní k PHP metodě třídy Smarty. Odchytit do proměnné lze soubory z lokálního souboru, soubory získané pomocí http:// a ftp:// připojení. Pokud je funkce použitá pro práci nad lokálním souborem, je třeba uvést cestu v absolutním tvaru, případně v relativním vůči PHP scriptu, ze kterého je zobrazována šablona. Obsah uložený pomocí fetch je stejně jako v předchozím případě dostupný přes "holý" název proměnné, není použit přístup přes pole třídy.

Fetch souboru do proměnné nepodporuje přesměrování (http redirect), pokud odchytáváte soubory, ujistěte se, že všechna lomítka máte na správných místech. Pokud máte server přepnutý do safe modu, bude Vám tento lokální soubor odchycen pouze v případě, že adresář, ze kterého je čerpáno je uveden v konfiguraci třídy Smarty v proměnné $secure_dir (řádek číslo ).

Fetch má dva následující parametry:

include

Příkaz include slouží ke vložení dalších šablon do té, která je aktuálně zobrazována. Použití je například pro vložení hlaviček, menu, patiček a dalších částí, které jsou společné pro celé webové řešení. Například soubor head.html obsahující vše od <!DOCUMENT .... po <body> bude stejný pro prezentaci, pro administraci a další části WWW stránek. Použití příkazu include bylo v příkladu k minulému dílu. Příkaz {include} je nepárový.

Příkaz include má následující parametry:

include_php

Příkaz slouží ke vložení PHP scriptu do šablony. Pokud je server nastavený do safe modu, bude tento soubor vložen pouze v případě, že adresář, ze kterého je vkládán je ve vlastnosti $trusted_dir třídy Smarty. Cesta ke vkládanému souboru musí být relativní vůči jmenovanému adresáři, nebo absolutní. Soubor bude vložen pouze jednou a při příštím použití include_php bude pouze volán script v něm uložený. Pomocí assign lze zprostředkovat předání dat ze scriptu do šablony.

Include_php je jeden ze způsobů, kterak oddělit prezentaci dat od jejich zpracování. Příkladem (převzatým z originální dokumentace) může být generování menu z databáze, vhodnějším přístupem se jeví zpracování dat veškerých dat před zobrazením šablony zejména díky možnosti ošetřit chyby a případně řešit přesměrování na jinou stránku. Include_php zanáší riziko výskytu chyby takříkajíc uprostřed stránky, takovéto chyby působí velice negativně na zákazníka, tento příkaz spíše poslouží v momentě, kdy je třeba uložit do databáze data vzniklá při zpracování šablony (vhodné bude použití s knihovnou EZ_SQL se zapnutou direktivou pro skrytí chyb).

Vlastnosti a metody šablony jsou dostupné přes proměnnou $this

Parametry příkazu include_php jsou následující:

insert

Funkce insert pracuje podobným způsobem jako include, rozdíl je ve zpracování. Pokud je použito cacheování, nejsou šablony vložené pomocí příkazu insert uloženy do cache, ale zpracovávány při každém zobrazení stránky.

Parametry funkce jsou následující:

Strip

Funkce strip je párová, která funguje podobným stylem, jako html kompressor, který používá poměrně hodně tvůrců www stránek. V šabloně jsou použity mezery, tabulátory, odřádkování a další neviditelné znaky, kterými autor zpřehledňuje svůj kód během vývoje, ale které nemají žádný význam pro vzhled stránky jako takové, je proto zbytečné, aby tyto znaky byly odesílány návštěvníkům stránek, zvláště je slušné mít stránky co nejmenší pro návštěvníky s pomalým připojením (gprs, cdma, modem), protože autorovo formátování obsadí až 25% z kapacity přenosu. Jediné místo, kde je doporučeno tuto kompresi vypnout, jsou místa uzavřená mezi tagy <pre>...</pre< a další používané pro ukázky zdrojových kódů, které je žádoucí zanechat v autorově formátování včetně prázdných řádek a jejich odsazování.

Funkce pracuje podobně jako modifikátor strip, ale neořezává proměnné zobrazené ve smarty šablonách, nýbrž formátování šablony jako takové. Její použití ve spojení možností zapnutí komprimovaného přenosu pomocí ob_start("ob_gzhandler"); v PHP scriptu může značně urychlit nažítání .

Funkce nemá žádné parametry.

Závěr

V tomto díle vyjímečně nejsou uvedeny žádné příklady, ale tento nedostatek bude napraven v příštím pokračování.

V tomto díle se objevila několikrát zmínka o použití cache při zobrazování šablon. Práce s ní bude uvedena v přespříštím díle, protože zbývá několik funkcí, které jsou vestavěné do šablon, včetně funkcí začínajících předponou html_, které jsou k využití především v souvislosti s tvorbou formulářů a které budou v příštím díle. V tom přespříštím bude, kromě práce s cache, popsány možnosti ladění stránek využívajících Smarty a možnosti práce s konfiguračními soubory.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=766