dědičnost: jak na správnou kombinaci layout, include, block a další v latte šablonách?

BigCharlie
Člen | 283
+
0
-

Rád bych věděl, jak vyřešit takovouhle situaci: mám tři šablony: layout, header, sublayout (layout v submodulu, tedy i v jiném adresáři).

@layout.latte

{include header.latte}

header.latte

{??? navigation}
	tady bych chtěl vypsat to, co definuji někde v submodulu
{/???}

sublayout.latte

{layout '../../templates/@layout.latte'}

{block navigation}
	a tady vlastní navigace:
	<ul>
		<li>a</li>
		<li>b</li>
	</ul>
{/block}

Každá z těch šablon obsahuje i další, „statický“ obsah.

Jde tohle v šablonách udělat? Tohle už snad ani není dědičnost…

Zkoušel jsem různé varianty define, include, block, ale nedaří se mi dosáhnout výsledku.

David Matějka
Moderator | 6445
+
+2
-

zkusil bych neco jako:

@layout.latte

{import header.latte}
{include header}

header.latte

{block header}
	....
	{include navigation}
{/block}

a sublayout asi stejne, mozna jen define namisto block

BigCharlie
Člen | 283
+
0
-

Jak byl myšlený ten sublayout? Vyzkoušel jsem tohle:

sublayout.latte

{define header}
	{block navigation}
		a tady navigace ze submodulu
	{/block}
{/define}

To přepíše komplet obsah bloku header, já bych chtěl v header jen vložit blok navigation. Zkoušel jsem i další kombinace, ale nedaří se mi.

David Matějka
Moderator | 6445
+
0
-

mysleno stejne jako to mas v tom prvnim prispevku :)

BigCharlie
Člen | 283
+
0
-

Mám pocit, že jsem vyzkoušel víc variant, než existuje…

Tahle funguje, takže evidentně ne ;-)

Díky!

duke
Člen | 650
+
0
-

BigCharlie napsal:

sublayout.latte

{define header}
	{block navigation}
		a tady navigace ze submodulu
	{/block}
{/define}

To přepíše komplet obsah bloku header, já bych chtěl v header jen vložit blok navigation. Zkoušel jsem i další kombinace, ale nedaří se mi.

Definovaný blok můžeš rozšířit tak, že něco přidáš na začátek či konec následujícím způsobem:

{define header}
	{block foo}Toto se přidá na začátek{/block}
	{include parent}
	{block bar}Toto se přidá na konec{/block}
{/define}
David Grudl
Nette Core | 8218
+
+5
-

Napsal jsem k tomu novou dokumentaci https://latte.nette.org/…-inheritance