Tout savoir pour devenir un pro de PluXml, mais pas seulement...

Afficher le menu d'une catégorie dans la barre des menus des pages statiques


Rédigé par jack le 8 commentairese

La barre des menus horizontaux généralement affichée dans la plupart des thèmes de PluXml, correspond à la liste des pages statiques visibles et actives.
Toujours dans un esprit de personnlisation de son thème, il est peut être utile voir intéressant de rajouter dans cette liste de menus, un menu donnant accès au contenu d'une catégorie d'articles. Voyons comment rajouter ce menu et quel code php utiliser.

Le code utilisé pour afficher la liste des pages statiques sous forme de menus est dans le fichier header.php du thème et est identifiable par les lignes suivantes:

<ul>
	<?php $plxShow->staticList($plxShow->getLang('HOME'),'<li id="#static_id"><a href="#static_url" class="#static_status" title="#static_name">#static_name</a></li>'); ?>
	<?php $plxShow->pageBlog('<li id="#page_id"><a class="#page_status" href="#page_url" title="#page_name">#page_name</li>'); ?>
</ul>
La ligne avec la fonction staticList permet d'afficher le menu Accueil et la liste des pages statiques, tandis que la fonction pageBlog affiche le lien "Blog" si une page statique a été définie comme page d'accueil du site.

Le bout de code suivant permet d'afficher le menu d'une catégorie en formatant le lien pour l'intégrer dans la liste des pages statiques en tenant compte de la réécriture d'url et de la mise en surbrillance du lien lorsque celui est sélectionné (les classes css .active et .noactive sont utilisées à cet effet).

<?php
$idCat = '001';
if(isset($plxMotor->aCats[$idCat])) {
	if($plxMotor->aCats[$idCat]['menu']=='oui' AND $plxMotor->aCats[$idCat]['active']) {
		$id = 'cat-'.intval($idCat);
		$url = $plxMotor->urlRewrite('?categorie'.intval($idCat).'/'.$plxMotor->aCats[$idCat]['url']);
		$name = plxUtils::strCheck($plxMotor->aCats[$idCat]['name']);
		$active = ($plxShow->catId()==intval($idCat)?'active':'noactive');
		echo '<li id="'.$id.'"><a class="'.$active.'" title="'.$name.'" href="https://pluxopolis.net/'.$url.'">'.$name.'</a></li>';
	}
}
?>
Pour rappel, chaque catégorie est identifiable par un numéro unique sur trois caractères: par exemple 001. Pour connaitre l'identifiant d'une catégorie il suffit d'aller dans la gestion des catégories (menu Catégories) de la zone d'administration. Les numéros sont affichés dans la colonne "Identifiant" du tableau listant toutes les catégories. Pour afficher votre catégorie, modifiez donc la ligne suivante en remplaçant 001 par le numéro de catégorie souhaitée.

$idCat = '001';
Notez que le menu ne sera affiché que si la catégorie est active et que le paramètre de la colonne "Menu" dans la gestion des catégories est réglé sur "Afficher".

Le code est à ajouter dans le fichier header.php stocké dans le dossier de votre thème, de manière à obtenir par exemple les lignes suivantes:

<ul>
	<?php $plxShow->staticList($plxShow->getLang('HOME'),'<li id="#static_id"><a href="#static_url" class="#static_status" title="#static_name">#static_name</a></li>'); ?>
	<?php
	$idCat = '001';
	if(isset($plxMotor->aCats[$idCat])) {
		if($plxMotor->aCats[$idCat]['menu']=='oui' AND $plxMotor->aCats[$idCat]['active']) {
			$id = 'cat-'.intval($idCat);
			$url = $plxMotor->urlRewrite('?categorie'.intval($idCat).'/'.$plxMotor->aCats[$idCat]['url']);
			$name = plxUtils::strCheck($plxMotor->aCats[$idCat]['name']);
			$active = ($plxShow->catId()==intval($idCat)?'active':'noactive');
			echo '<li id="'.$id.'"><a class="'.$active.'" title="'.$name.'" href="https://pluxopolis.net/'.$url.'">'.$name.'</a></li>';
		}
	}
	?>
	<?php $plxShow->pageBlog('<li id="#page_id"><a class="#page_status" href="#page_url" title="#page_name">#page_name</li>'); ?>
</ul>

DClassé dans : PluXml ,Mots clés : Astuce, Page statique, Catégorie

A propos de l'auteur, jack:

Webmestre de PluXopolis de 2018 à Avril 2023.

8 commentaires

jerrywham a dit : #1

Enfin une solution propre de ce qui manquait au menu de Pluxml. Merci.

Pourquoi ne pas l'intégrer directement en natif ?

cpalo a dit : #2

Bonjour

J'aurai souhaité que rubrique 1 s'insère entre statique 1 et statique 2.

Je suppose qu'il faut que je supprime le code initial ( staticlist....) permettant d'afficher automatiquement le menu des pages statiques et que je remplace par deux liens du style permettant d'afficher la rubrique.

De même j'utilise le plugin myContact, et il s'affichait en dernier. Mais en fait il s'affiche après la dernière page statique, ce qui fait qu'il n'apparait plus en dernier puisqu'il y a maintenant cette rubrique 1.

Cordialement

Stéphane a dit : #3

@cpalo :
Bonjour. Effectivement avec la fonction staticList il n'est pas possible d'afficher le menu d'une catégorie. Il faut coder en dur les liens. Du coup sans la fonction staticList il n'est pas possible également d'afficher le menu du plugin myContact. Pareil il faut alors coder en dur les liens dans le fichier du thème.

Tomek a dit : #4

Bonjour,

J'ai exactement la même demande que Cpalo, et en plus avec un site multilingue.
Je viens de tester en insérant ce code de catégorie au côté du code de même style pour insérer une page statique définie dans le menu, et, je pense que c'est un bug, il y a un souci avec le multillingue : le lien ne s'affiche pas pour la page... En regardant les id, je me suis aperçu que c'étaient les mêmes dans les différentes langues, ça part toujours de 001 (ce qui est assez logique, je pense).

Y a t-il moyen de voir ce qu'il est possible de faire ?
Merci d'avance !

Franck

Tomek a dit : #5

Ah, je précise, je viens de regarder, il n'y a pas d'erreur dans les logs php.
Et côté rendu, seul l'intitulé du lien manque (entre les balises <a></a>), tout le reste est ok, donc ça doit pas être ce que je supposais dans le précédent commentaire, ahah...

Patch-Works a dit : #6

Bonjour,
Je découvre PluXML et compte l'utiliser pour refaire mon site personnel. J'ai consulté cette page et celle expliquant comment déplacer le menu 'Blog', mais je n'arrive pas à mettre en place ce que je souhaite:
Home | Blog | Catégories | Contact (plug-in)
C'est réalisable?

Aisyk a dit : #7

Bonjour,

Dans l'exemple, les liens ne fonctionnent pas. Ils sont mis en double :
"http://vlko10ans.org/santehttp.html://vlko10ans.org/sante.html" alors que le code ne mentionne qu'une adresse :
echo '<li id="'.$id.'"><a class="'.$active.'" title="'.$name.'" href="http://vlko10ans.org/quartiers-prioritaires.html'.$url.'">'.$name.'</a></li>';

Aisyk a dit : #8

Bonjour,

J'ai réussi à placer le menu correctement en supprimant la mention '.$url.' du code. Après maints essais et d'erreur de syntaxes...

Il serait intéressant de mettre à jour cet article en prenant en compte que ce lien spécifique, noté : " href="http://pluxopolis.net/'.$url.'">' doive être modifié en conséquence.
Je précise ici que j'ai des "liens en dur". Je n'ai sais pas su faire des liens relatifs. Idéalement, il devrait reprendre l'url de la catégorie sans que nous ayons besoin de l'écrire. Ce qui n'est pas possible ici apparemment, car si je laisse la mention '$url.' j'ai une erreur de syntaxe.

rFil RSS des commentaires de cet article

Les commentaires sont fermés.

Top