Le menu de Freshy - Compléments

Je vous avais parlé des possibilités de personnalisation de la barre de menu du thème Freshy dans ce billet de fin septembre dernier. Depuis, plusieurs d'entre vous ont posé des questions ici, sur le forum de DotClear ou encore par mail, essentiellement sur la manière de de mettre en évidence le menu sélectionné en fonction du mode courant.

Je rappelle que le but du jeu est de positionner une classe current_page_item sur la balise <li> (en plus de la classe existante page_item ou last_menu qu'il faut préciser quoiqu'il arrive). Le code de base est le suivant :

<li class="page_item <?php echo (test) ? 'current_page_item' : ''; ?>">…</li>

Voilà l'aspect normal d'un élément du menu :

Élément de menu normal

Et voilà maintenant à quoi il ressemble lorsqu'on ajoute la classe current_page_item à la balise <li> :

Élément de menu en cours

Attention si vous avez le plugin pagination installé et actif car il intercepte le mode courant et le remplace par le sien. Dans ce cas il faudra tester une autre variable ($dc_orig_mode) dans laquelle le plugin sauvegarde le mode standard avant de le modifier. D'ailleurs, par soucis de simplicité, nous pouvons mettre la ligne suivante, juste avant la définition de la barre de menu, y compris si vous n'avez le plugin installé chez vous :

<?php if ($mode != 'pagination') $dc_orig_mode = $mode; ?>

Nous allons maintenant voir comment spécifier le test en fonction des cas.

Cas de la page d'accueil

Dans ce cas, il suffit d'utiliser le test ($dc_orig_mode == 'home').

Cas des catégories

Le test ($dc_orig_mode == 'cat') && ($news->f('cat_id') == xx) permettra de tester si la catégorie possédant l'identificateur numérique xx est active. L'identificateur numérique est facilement récupérable sur la page de gestion des catégories. Vous y trouverez la liste de toutes vos catégories et pour chacune, en glissant la souris sur leurs noms vous verrez une URL qui se termine par &cat_id=xx. Notez le xx, c'est lui dont il s'agit.

Si vous souhaitez que l'item de menu reste éclairé y compris lorsque vous affichez un billet de cette catégorie, il suffit d'utiliser (($dc_orig_mode == 'cat') || ($dc_orig_mode == 'post')) && ($news->f('cat_id') == xx).

Cas des pages connexes

J'avais précisé dans le billet précédent comment créer une petite fonction dans le fichier prepend.php du thème qui permet de faire test simplement. Avec cette fonction, il suffit de tester avec dcRelatedCurrent('infos') pour une page spécifiée avec infos = "infos.php|Informations" dans le fichier related.ini du plugin (répertoire share/related).

Cas d'un billet particulier

Ici il suffit d'utiliser ($dc_orig_mode == 'post') && ($news->f('post_id') == xxx), avec xxx représentant l'identificateur numérique du billet. Cet identificateur précède normalement le titre dans l'URL du billet. Par exemple, le billet que vous êtes en train de lire à un identificateur égal à 792 (…?2006/11/28/792-le-menu-de-freshy-complements)

Cas d'une table des matières

Dans ce cas, il faut utiliser ($dc_orig_mode == 'tocHome'). Si vous voulez différencier les différentes tables des matières en fonction du fichier de configuration utilisé, vous pouvez compléter en testant la variable $toc_ini_file qui contiendra alors le nom du fichier de configuration (sans extension). Par exemple ($dc_orig_mode == 'tocHome') && ($toc_ini_file == 'alpha') dans le cas d'un fichier alpha.ini (dans le répertoire share/toc).

Cas d'une galerie

Avec le plugin Galerie il suffit de tester avec ($dc_orig_mode == 'galleryCat') || ($dc_orig_mode == 'galleryGal') || ($dc_orig_mode == 'galleryImage').

Cas du résultat d'une recherche

Sur la page de résultat d'une recherche il faut tester avec ($dc_orig_mode == 'search').

Cas de la page contact fournie par le plugin du même nom

Pas compliqué car il suffit de tester avec ($dc_orig_mode == 'contact').

Cas des pages produites par le plugin Download manager

Là non plus c'est relativement simple. Un petit test avec ($dc_orig_mode == 'dlm') suffira.

Voilà, je pense avoir fait le tour des possibilités. Si vous aviez des précisions à apporter, n'hésitez-pas à le faire en commentaire, je mettrai alors ce billet à jour en conséquence.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/3063

Haut de page