Comme je l’indiquais nous allons utilisé plusieurs techniques (snippets) pour gérer notre menu principal.
Le premier est WAYFINDER qui utilise plusieurs "chunk" :
Créer le chunk "mnpOuter" :
<div id="mnu_p"><!-- Menu Principal -->
<ul>
[+wf.wrapper+]
</ul>
</div> <!-- Menu Principal -->
Jusque là c’est simple. Nous retrouvons notre structure. Pas besoin d’explication, suffit d’aller voir la doc de WAYFINDER.
Créer le chunk "mnpRow" :
<li><a class="[+phx:if=`[[GetField? &docid=`[[UltimateParent? &topLevel=`2`]]` &field=`pagetitle`]]`:is=`[+wf.title+]`:then=`activemenu`:else=`menuitem`+]" href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>
Là c’est plus compliqué.
Un peu d’explication s’impose :
Pour afficher une ligne avec WAYFINDER nous avons besoins de ce code :
<li><a class="menuitem`" href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>
et pour la ligne active (Nos produits dans notre exemple) :
<li><a class="activemenu" href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>
Pour afficher l’une ou des lignes, il nous faut connaître si la page affichée est une fille ou non de notre titre dans le menu.
Pour cela nous allons utiliser 3 snippets imbriqués les uns dans les autres :
- UltimateParent permet d’obtenir ID du document Parent le plus haut dans l’arborescence (fr) puis il redescend les niveaux en fonction du paramètre &topLevel=`2` (ici 2 niveaux nous avons donc l’ID de la page "Nos Produits")
- GetField renvoie le contenu du champs indiqué dans le paramètre &field (ici `pagetitle` soit "Louis Philippe" dans notre exemple) pour l’ID du document transmis par le paramètre &docid (ici l’id obtenu par UltimateParent précédemment)
- Enfin PHX permet de conditionner le résultat : si (if) GetField renvoie (is) le même titre que le titre de la ligne alors (then) "activemenu" sinon (else) "menuitem"
Voilà notre menu principal est en place et il prend en compte notre arborescence du site.
Nous pouvons ajouter un autre chunk "mnpRowHere" pour l’affichage de la page titre si besoin :
<li><a class="activemenu" href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>
et un autre chnuk "mnp_parentRowActif" qui servira pour lorsque le menu secondaire sera construit :
<li class="activemenu"><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></li>
enfin pour activer WAYFINDER :
[!Wayfinder? &startId=`[[UltimateParent? &startID=`[*id*]`]]` &level=`1` &lastClass=`` &outerTpl=`mnpOuter` &rowTpl=`mnpRow` &hereTpl=`mnpRowHere` &parentRowTpl=`mnp_parentRowActif` !]
La aussi j’utilise UltimateParent pour prendre en compte que notre site est mulitilangue.
Reste à construire notre menu secondaire qui je le rappelle se trouve sur une autre partie du site par exemple sur une colonne à gauche ou à droite.
Je vous donnerai la suite un peu plus tard