dědičnost: jak na správnou kombinaci layout, include, block a další v latte šablonách?
- BigCharlie
- Člen | 283
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
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
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.
- BigCharlie
- Člen | 283
Mám pocit, že jsem vyzkoušel víc variant, než existuje…
Tahle funguje, takže evidentně ne ;-)
Díky!
- duke
- Člen | 650
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
Napsal jsem k tomu novou dokumentaci https://latte.nette.org/…-inheritance