LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> 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ý | Články autora | přečteno 9712×

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:

  • name - nepovinný parametr, není-li definován, je jeho jméno default. Jméno se definuje jako řetězec znaků. Určuje jméno zachycovaného bloku, pod kterým jsou později k dispozici ochycená data.
  • assign - nepovinný parametr, definuje se jako řetězec, při jeho nedefinování není dostupný. Určuje jméno proměnné, do které bude přiřazen obsah odchyceného bloku, pro pozdější použítí bez přístupu přes pole $smarty.

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:

  • file - soubor k odchycení, lokální, přes http:// a ftp:// protokol
  • assign - proměnná šablony, do které bude přiřazena odchycená www stránka

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:

  • file - název vkládané šablony, povinný parametr.
  • assign - jméno proměnné, do které bude přiřazen obsah/výstup ze šablony, místo jejího zobrazení.
  • [var] - proměnná, která má být definována a naplněna určitou hodnotou pro použití v includované šabloně. Typ proměnné se řídí definicí.

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í:

  • file - povinný parametr, jméno includovaného PHP souboru.
  • once - nepovinný parametr logického typu. Výchozí nastavení je na true, které určuje, že PHP soubor bude vložen pouze pouze jednou i při několikanásobném opakování příkazu, například v cyklu.
  • assign - nepovinný parametr, udává jméno a obsah proměnné předané ze scriptu do šablony.

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í:

  • name - povinný parametr typu řetězec, obsahuje název vkládané šablony.
  • script - nepovinný parametr typu řetězec, obsahem je název scriptu, který bude spuštěn před názvem šablony. Pokud je server přepnut do safe modu, musí být adresář, ve kterém je tento script uložen, definován ve vlastnosti $trusted_dir třídy Smarty. Script je vložen pouze jednou a při dalším použití pouze spouštěn.
  • assign - nepovinný parametr, řetězcového typu, která udává jméno proměnné, do které bude přiřazen zformátovaný výstup ze šablony místo jejího zobrazení. Protože se necacheuje, neušetří se žádný čas zpracování při opakovaném vkládání šablony.
  • [var] - Nepovinný parametr, kterým se definují proměnné vložené ze šablony do scriptu.

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.

Verze pro tisk

pridej.cz

 

DISKUZE

insert 30.3.2006 16:02 Jan Kričfalušij




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze