isParent
Ověřuje, zda je asset jedním z rodičů jiného assetu.
BooleanisParent
(
Asset ancestor,
Asset descendant)
- ancestor
- Potenciální rodičovský asset.
- descendant
- Potenciální dětský asset.
Popis fungování
Funkce ověřuje relaci mezi assety danou strukturou assetového stromu. Vrací true
, pokud je asset ancestor rodičem (nebo i vzdálenějším předkem) assetu descendant.
Pozor: Funkce vrací true
i v případě, že ancestor a descendant je jeden a týž asset.
Motivace
Je rozumné navrhovat prezentační logiku tak, aby struktura prezentace reprezentovaná navigačními prvky byla shodná se strukturou sekcí v assetovém stromu.
Pokud je tato prerekvizita splněna, je možné pomocí funkce isParent
snadno ověřit, zda aktuálně zobrazovaná stránka patří v navigační struktuře pod nějakou sekci.
<ul id="main-menu">
{while _template.main_menu}
<li>
<a href="{link(_.asset)}">
{_.title}
</a>
</li>
{/while}
</ul>
<ul id="main-menu">
{while _template.main_menu}
<li>
<a href="{link(_.asset)}">
{if isParent(_.asset, _primary)}
<strong>{_.title}</strong>
{else}
{_.title}
{/if}
</a>
</li>
{/while}
</ul>
<ul id="main-menu">
{while _template.main_menu}
<li>
<a href="{value(target(_.asset), link(_.asset))}">
{if isParent(_.asset, _primary)}
<strong>{_.title}</strong>
{else}
{_.title}
{/if}
</a>
</li>
{/while}
</ul>
Hlavní menu je reprezentované výčtovým datovým zdrojem obsahujícím seznam sekcí. V tomto příkladu je tento datový zdroj připojený k aktuální šabloně referencí main_menu
.
Při výpisu se u každé položky zkontroluje, zda je rodičem aktuální primární sekce. Pokud ano, je třeba ji v menu zvýraznit – vyznačit jako aktuální.
Díky vlastnostem funkce isParent
se jako aktuální zvýrazní i ta položka hlavního menu, která je aktuální primární sekcí.
Dále je užitečné dodržovat konvenci, která umožní volit libovolně cíl odkazu pro dané položky menu; třetí ukázka demonstruje, jak lze k tomuto účelu využít funkci target. Viz také podrobný výklad.
Obdobně je možné funkci použít i v případě, kdy má navigační struktura části prezentace kopírovat strukturu složek ve vybrané části assetového stromu.
Viz také popis funkce parentsOf a podhodnoty parent
assetu.