LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> 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 11996×

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ů

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

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

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

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