isParent

Ověřuje, zda je asset jedním z rodičů jiného assetu.

Boolean isParent ( 
    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.

Příklad: Zvýraznění aktuální položky v hlavním menu
Základ výpisu menu
<ul id="main-menu">
{while _template.main_menu}
  <li>
    <a href="{link(_.asset)}">
      {_.title}
    </a>
  </li>
{/while}
</ul>
Výpis menu se zvýrazněním
<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>
Konvence pro volitelný odkaz
<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.

Pro vložení příspěvku do diskuse se přihlašte.