Vkládání Latte šablon do sebe

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

Zdravím,

jak funguje vkládání šablon do sebe? Řekněme, že mám /layout.latte. Pak mám /NejakyPresenter/default.latte a /NejakyPresenter/jinaSablona.latte. Poslední dvě jmenované šablony mají kus HTML shodný. Jak vytvořit další soubor, ve kterém toto HTML bude a budu ho moc includovat do těch dvou šablon default.latte a jinaSablona.latte?

Předpokládám, že něco ve stylu {include #spolecneHTML}, a soubor spolecneHTML.latte, ve kterém bude {block spolecneHTML}…{/block}.

PS: toto jsem četl a pochopil jsem, že si musím asi vytvořit nový layout, což mi pro tohle nepřijde úplně nejlepší řešení.

OK3
Člen | 91
+
0
-

Pleteš dohromady include s dědičností bloků.

{include ‚template.latte‘} je prosté vložení kódu vyčleněného do samostatného souboru, jehož součástí mohou (ale nemusí) být bloky, které se rovnou vypíšou nebo ne (jsou jen definované) ⇒ rozdíl mezi {block …} a {define …}

template.latte:

{define #item}{$item->id} {$item->name}{/define}

{foreach $rows as $row}
	{include #item, item => $row} <= tady vypisuju výše definovaný blok
{/foreach}

A pak máš práci s bloky.

layout.latte:

...
{block #header}default text{/block}

{block #body}{/block}
...

page.latte:

{extends 'layout.latte'}
{block #body}contents{/block} <= tento obsah nahradí/přepíše stejnojmenný blok v layout.latte
{include 'template.latte'} <= vloží kód ze souboru výše, implicitně předpokládá existenci proměnné `$rows`

Za předpokladu, že všechny soubory jsou ve stejném adresáři, jinak by se uváděly relativní cesty. Napříklady layouty a sdílené šablony by byly o úroveň výš/jinde než šablony, které je sdílí.

Jak sis mohl všimnout, {include …} se dá použít na vložení jak souboru, tak bloku.

No, koukám, že tu opakuju, co je napsáno tady https://latte.nette.org/cs/tags#…

Editoval OK3 (29. 11. 2013 14:46)

MikeLacroix
Člen | 60
+
0
-

Díky! Neopakuješ :) Navedl jsi mě na jinou sekci stránky, kde se zmiňuje i include konkrétního souboru. (to je mimochodem něco, co se mi na Nette nelíbí: Když chci najít jednu konkrétní věc, musím přečíst celý dlouhý článek – a na to nemám čas. Že uhádnu, pod čím danou věc hledat v dokumentaci je sice pěkné, ale ne vždycky to uhádnu).