Rozdělení renderování šablony na 2 části

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ascaria
Člen | 187
+
0
-

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)

Jan Endel
Člen | 1016
+
0
-

Vzdyt to co jsi zde napsal by melo jit v pohode realizovat skrze bloky.