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

před 5 měsíci

BigCharlie
Člen | 267
+
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.

před 5 měsíci

David Matějka
Moderator | 5897
+
+1
-

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

před 5 měsíci

BigCharlie
Člen | 267
+
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.

před 5 měsíci

David Matějka
Moderator | 5897
+
0
-

mysleno stejne jako to mas v tom prvnim prispevku :)

před 5 měsíci

BigCharlie
Člen | 267
+
0
-

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

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

Díky!

před 5 měsíci

duke
Člen | 643
+
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}