dědičnost šablon a layoutů – zmatek

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

Zdravím,

pročítám dokumentaci, fórum, ale mám celkem zmatek v dědění šablon a layoutů. Co se týče víceúrovňového layoutu, tak to v dokumentaci není vysvětleno vůbec, jenom zmíněno, že to jde.

Trápí mě celkem triviální problém. Mám modul Admin, v něm presenter Edit a pro něj views/šablony default.phtml, texts.phtml, vars.phtml (@layout.phtml je společný pro celý modul). Chci do všech šablon vložit menu, které je specifické pouze pro tento presenter. Napadlo mě zatím jediné řešení. Vytvořit soubor např. block.menu.phtml a v každé šabloně pak vkládat {include block.menu.phtml}.

Jde to udělat nějak jinak, neboli kam dát {block #menu}, abych na něj viděl ze všech šablon v rámci jednoho presenteru? Podotýkám, že chci zachovat jeden layout?

Předem díky za odpověď.

Jan Tvrdík
Nette guru | 2595
+
0
-

Vytvořit soubor Editor.@layout.phtml

{layout @layout.phtml}

{block #content}
	<div id="menu">...</div>

	{include #innerContent}
{/block}

a šablonách pak používej místo {block #content}, {block #innerContent}.

arron
Člen | 464
+
0
-

Popripade by to slo asi i bez to ho #innerContent s tim, ze v tech sablonach by jako prvni v blocku #content bylo {include #parent}.

Petr Tvaroha
Člen | 25
+
0
-

Díky!

Už jsem to skoro měl, jen mě nedošlo, že musím použít ten #innerContent.

Jinak by IMHO bylo vhodné podobný příklad přidat do dokumentace k víceúrovňovým layoutům, může to ušetřit ostatním spoustu času.

Editoval Petr Tvaroha (7. 10. 2010 13:10)