Voici un petit template eZ Publish de mon cru pour afficher une arborescence de noeuds sous forme d'une liste. Puisse-t-il servir à quelqu'un d'autre qu'à moi... On peut l'utiliser pour faire un sitemap ou un menu de navigation pour peu qu'on sache utiliser les CSS correctement.

Le code

{if $tree|count|gt(0)}
{def $diff  = 0
     $depth = $tree.0.depth}
<ul>
  <li><a href={$tree.0.url_alias|ezurl}>{$tree.0.name|wash}}</a>
  {foreach $tree as $item offset 1}
    {set $diff = $depth|sub($item.depth)}
    {if $diff|lt(0)}
      <ul>
    {else}
      {'</li></ul>'|repeat($diff)}</li>
    {/if}
    <li><a href={$item.url_alias|ezurl}>{$item.name|wash}</a>
    {set $depth = $item.depth}
  {/foreach}
  </li>
</ul>
{/if}

Utilisation

Imaginons que nous voulions faire un sitemap de toute l'arborescence de contenu (nous partirons du principe que le node_id de la racine est "2")...

Tout d'abord, on copie le code dans un fichier de template, par exemple sitemap.tpl.

Puis on récupère la liste des nœuds grâce à la fonction fetch :

{def $sitemap = fetch( 'content', 'tree', hash( 'parent_node_id', 2 ) )}

Ensuite, il suffit d'inclure le template sitemap.tpl en passant la variable $sitemap en paramètre.

{include uri="design:menu.tpl" tree=$sitemap}

Si on le souhaite, on peut bien évidemment copier/coller le code directement, sans passer par un template dédié, mais c'est moins lisible à la fin.