Rozdělení renderování šablony na 2 části
- Ascaria
- Člen | 187
Ahoj,
hodně lidí řeší, jak v šabloně komponenty mít možnost přidat nějaký externí css nebo javascript do hlavičky. Bohužel ale při tvorbě komponenty je již hlavička stránky vytvořená a nelze s ní dále manipulovat. Jelikož ale nevím, jak šablonovací systém funguje, tak bych zkusil přihodit nějaké návrhy jen v pseudokódu:
Vytvořit speciální makra jen pro layout – head a body, renderování proběhne vždy v pořadí „body – head“ a na výstupu se dá head před body, nezávisle na pořadí v kódu, díky tomu možná půjdou do head nějak přidávat z komponenty věci…
<doctype>
<html>
{head}
{/head}
{body}
{/body}
</html>
Nebo
Rozdělit šablonu layoutu, stránky i komponenty na dvě nezávislé části:
Layout (zde mají makra body a head funkci „kontejnerů“, případně se můžou nazvat například headContainer a bodyContainer, můžou se vyskytovat jen jednou (a jen v layoutu), jinak vyhodí výjimku):
<doctype>
<html>
{head} / {headContainer}
to co je v head
{/head}
{body} / {bodyContainer}
to co je v body
{/body}
</html>
Stránka (zde mají makra body a head funkci appenderů, oboje jsou volitelné, při neuvedení ani jednoho se vše bere jako body appender (možná bc kompatibilita), pokud se tyto makra ve stránce, či komponentě vyskytnou, ale layout nemá makra headContainer atd, vyhodí se výjimka):
{head} / {headAppender}
přidáme si do head na konec co chceme
{/head}
{body} / {bodyAppender}
to co je nyní normálně v šabloně
{/body}
Komponenta: stejné jako Stránka
Nevím jak to implementovat, takže rovnou říkám, že si to nemůžu implementovat sám. Kdyby se to ale někomu líbilo a měl by představu, že to jde implementovat a jak to implementovat, bylo by to super. :)
Editoval Ascaria (3. 4. 2012 11:40)