Autor Zpráva
Jack Finger
Profil
Dobrý den, chtěl bych se zeptat, jak vy řešíte tento problém. Jde o tom že mám nějaké pole s daty, které chci vypsat do stránky pomocí šablon. V souboru TPL si označím blok, který chci použít a pak ten blok chci cyklem vypsat tolikrát, kolik je hodnot a dosadit za definované atributy, nějak takhle:
Pole s hodnotami (ve formátu TITLE, LINK) obsahuje např:
1 Úvod, uvod.php
2 Kontakt, kontakt.php
3 O nás, o-nas.php

TPL obsahuje napr:
oznaceni zacatku dynamickeho bloku menu
<a href="{menu.LINK}">{menu.TITLE}</a>
oznaceni konce dynamickeho bloku menu

výstup:
<a href="uvod.php">Úvod</a>
<a href="kontakt.php">Kontakt</a>

teď jak to přelouskat? Díky, za každou radu, která by mě mohla nasměrovat, ale prosím o něco širšího než jen "použij preg_replace()". Díky, Jack F.
p.s.: zkoušel jsem koukat do phpBB, ale tam jsem to moc nepobral, nechápu co tam provádějí s tím sbíráním PHP kódu a jeho nasledným eval()-ováním.
ninja
Profil
{foreach from=$vsechny_menu item=menu}
<a href="{$menu.LINK}">{$menu.TITLE}</a>
{/foreach}
Jack Finger
Profil
ninja
jsi si jistý, že to půjde?

ostatní
nějaké další nápady, prosím?
Jack Finger
Profil
ninja
ale tak jo, díky za inspiraci ;o)

vyřešeno poměrně jednoduše, snad to pojede :o)
Joker
Profil
Jack Finger
Já to v JoresTemplate dělám takhle (inspirování FastTemplate):
<!-- JTPL: START BLOCK: id_bloku -->
...kód...
<!-- JTPL: END BLOCK: id_bloku -->

...jak je to řešené v samotném skriptu se můžete mrknout :-)

Když to zjednoduším, dělám to tak, že se celý blok ze šablony vyjme a nahradí se "virtuální proměnnou". A z vnitřku bloku se vytvoří nová "virtuální šablona".
Následně můžu s tou "virtuální šablonou" pracovat stejně jako se skutečnou šablonou, která by byla v jiném souboru.
Zpracování bloku je potom jednoduché: metodě pro zpracování šablony předhodím tu virtuální šablonu a výsledek připojím k hodnotě té virtuální proměnné.

Uf, doufám, že ten výklad je srozumitelný :)
Je to sice krapet komplikovanější přístup, ale na rozdíl od jiných (například FastTemplate) umožňuje různé vychytávky, jako vnořené bloky a podobně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: