Vkládání Latte šablon do sebe
- MikeLacroix
- Člen | 60
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
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
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).