Mettre une classe active dans une boucle de menu, rien de plus simple avec SPIP. Mais dès qu’on cherche à faire la même chose sur des menus hors boucle comme un clic vers la page d’accueil, vers un squelette unique (url du style « spip.php?page= »), là ça se complique

Pour un menu comme inc-rubrique.html qui se présenterait sous forme de liste ( ul li par exemple), on veut que le premier li donne le lien vers la page d’accueil. On le met donc hors boucle. Du coup quand on est sur la page d’accueil, le lien n’a pas comme les autres liens, un class= »on ».

Nous avons alors la possibilité de créer une petite conditionnelle façon SPIP. Pour cela il faut d’abord rajouter un élément dans l’include de inc-rubrique dans le squelette sommaire.html :

<INCLURE{fond=inc-rubriques}{sommaire=oui}>

En suite dans la balise a qui ramène à l’accueil, il suffit de rajouter le code suivant :

[ class= »(#ENV{sommaire}|?{on}) »]

Le terme sommaire peut être remplacer par ce qu’on veut, du moment qu’on le retrouve dans les deux éléments de code à rajouter. Si vous créez un squelette mentions.html pour les mentions légales, vous pouvez par exemple mettre dans l’include du inc-rubrique de mentions.html rajouter {mentions=oui} qui attribut une valeur oui à mentions, puis [(#ENV{mentions}|?{on})] qui regarde si ‘mentions’ existe et qui affiche ‘on’ s’il existe…

Il faut du coup compléter l’include du inc-rubrique.html sur chaque squelette unique, cela prend un peu de temps mais fonctionne très bien.

MAJ du 26/09/09 : Voir aussi http://www.guiderdoni.net/Menu-statique-hors-boucle-avec-la.html, je viens de tomber dessus.