Define a include bloku, latte

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

Chcel by som sa spytat na jednu vec.
Hlavna sablona pre stranku je @layout.latte, a pre HomepagePresenter pouzivam default.latte kde mam
{block content} ... {/block}
mam vytvoreny dalsi subor menu.latte kde mam
{define menu} ...{/define}
to menu chcem pouzit v default.latte ako
{block content} ... {include menu} .. {/block}

Ako na to? Pretoze ked pouzijem {includeblock 'menu.latte'} tak mi uz nenacita hlavnu sablonu.
Chcel by som mat v jednotlivych suboroch definovane jednotlive komponenty a potom ich v roznych sablonach nacitavat len s includom.

Vdaka za odpoved

duke
Člen | 650
+
0
-

Mám tentýž problém a diskusi k němu jsem před 2 týdny otevřel na anglickém fóru zde. Zatím bez reakce, takže se zdá, že to aktuálně nijak rozumně řešit nejde.

Jan Tvrdík
Nette guru | 2595
+
0
-

{includeblock 'menu.latte'} se nesmí nacházet v rootu šablony, ale musí být součástí bloku, kde chceš danou šablonu použít.

Tedy takto je to OK:

{block #content}
	{includeblock menu.latte}
	{include #menu}
{/block}

Naproti tomu toto nebude fungovat:

{includeblock menu.latte}
{block #content}
	{include #menu}
{/block}
duke
Člen | 650
+
0
-

Ono se to také chová různě podle toho zda jde o základní layout či rozšiřující šablonu. Zápis, který říkáš, že nebude fungovat, tak funguje např. v @layout.latte (pokud tato je nejzákladnějším layoutem, tj. nerozšiřuje žádný jiný). Popravdě moc nerozumím tomu, proč se to chová takto divně a zda to bylo zamýšleno, či zda je to jen něco nedořešeného.

Editoval duke (11. 2. 2014 0:43)