Menu principal en haut et sous-menu dans la sidebar
Fogg
Member
Bonjour, en ce début d'année j'ai envie de partager une modification que j'ai faite sur PluXml et qui me parait utile pour d'autres utilisateurs.
Qui sait, cela peut donner des idées et peut-être que ça deviendra une option "officielle" dans la configuration ?
Voici l'idée: dans le menu principal (au-dessus) on reprend des entrées qui sont une porte d'entrée vers un type d'information ou un domaine, ce qui dirige vers une page statique qui donne un aperçu du domaine concerné. Les pages liées à ce domaine (qui sont aussi des pages statiques) sont reprises sous forme de sous-menu dans la sidebar.
Ce qui veut dire qu'on ne veut pas afficher les sous-menus au-dessus, mais seulement "activer" le menu en cours.
Par contre, dans la sidebar on doit afficher toutes les pages statiques sous forme de menu en fonction du domaine sélectionné.
1) dans l'admin : il faut créer les pages statiques représentant un domaine, celui-ci étant identifié par le Groupe, les activer et marquer "Afficher" dans le menu
2) dans l'admin : il faut créer les pages statiques liées au domaine en renseignant le même Groupe (=domaine), les activer et marquer "Masquer" dans le menu
3) faire en sorte d'activer le menu quand on est sur une page statique du domaine associé. Cela passe par une modification du code PHP dans la méthode staticList du fichier class.plx.show.php
il faut remplacer la ligne 1301:
par le bloc suivant:
4) il reste à afficher la liste des pages statiques associées au domaine en cours dans la sidebar. Ceci se fait sur base du Groupe associé à la page en cours, et celui-ci est le même que l'on soit sur la page d'introduction du domaine (menu) ou sur une des pages liées. Personnellement j'utilise dans mon thème un fichier sidebar séparé pour les pages statiques dont je sais qu'elles font partie d'un domaine. Dans un des blocs de la sidebar j'ai repris le code suivant à partir d'un exemple d'un autre thème (désolé j'ai oublié lequel):
Pour voir le résultat www.ffe.be
Merci de partager vos remarques / suggestions...
Qui sait, cela peut donner des idées et peut-être que ça deviendra une option "officielle" dans la configuration ?
Voici l'idée: dans le menu principal (au-dessus) on reprend des entrées qui sont une porte d'entrée vers un type d'information ou un domaine, ce qui dirige vers une page statique qui donne un aperçu du domaine concerné. Les pages liées à ce domaine (qui sont aussi des pages statiques) sont reprises sous forme de sous-menu dans la sidebar.
Ce qui veut dire qu'on ne veut pas afficher les sous-menus au-dessus, mais seulement "activer" le menu en cours.
Par contre, dans la sidebar on doit afficher toutes les pages statiques sous forme de menu en fonction du domaine sélectionné.
1) dans l'admin : il faut créer les pages statiques représentant un domaine, celui-ci étant identifié par le Groupe, les activer et marquer "Afficher" dans le menu
2) dans l'admin : il faut créer les pages statiques liées au domaine en renseignant le même Groupe (=domaine), les activer et marquer "Masquer" dans le menu
3) faire en sorte d'activer le menu quand on est sur une page statique du domaine associé. Cela passe par une modification du code PHP dans la méthode staticList du fichier class.plx.show.php
il faut remplacer la ligne 1301:
[== PHP ==]
$stat = str_replace('#static_status',(($home===false AND $this->staticId()==intval($k))?'static active':'noactive'), $stat);
par le bloc suivant:
[== PHP ==]
if($home AND $k==1) {
$stat = str_replace('#static_status','active',$stat);
} else {
if (preg_match('/^(categorie|article)/', $_SERVER['QUERY_STRING'])) {
$stat = str_replace('#static_status','noactive',$stat);
} else {
#Do not activate the sub menu as it is shown in side panel, only activate the main menu (group)
$stat = str_replace('#static_status',(($home===false AND ($this->staticId()==intval($k) || ( $v['group'] == $this->plxMotor->aStats[$this->plxMotor->cible]['group'] AND !empty($v['group']))))?'static active':'noactive'), $stat);
}
}
4) il reste à afficher la liste des pages statiques associées au domaine en cours dans la sidebar. Ceci se fait sur base du Groupe associé à la page en cours, et celui-ci est le même que l'on soit sur la page d'introduction du domaine (menu) ou sur une des pages liées. Personnellement j'utilise dans mon thème un fichier sidebar séparé pour les pages statiques dont je sais qu'elles font partie d'un domaine. Dans un des blocs de la sidebar j'ai repris le code suivant à partir d'un exemple d'un autre thème (désolé j'ai oublié lequel):
[== PHP ==]
<?php // astuce statics classées par groupe !!!
// étape 1: groupage des statics dans chaque groupe
if($plxShow->plxMotor->aStats) { // s'il y a des pages statics
$menu_groupe = array(); // création du tableau des groupes
foreach($plxShow->plxMotor->aStats as $k=>$v) { // on boucle sur la liste des statics
if($v['active'] == 1 AND $v['menu'] == 'non' AND $v['group'] == $plxShow->plxMotor->aStats[$plxShow->plxMotor->cible]['group']) { // si la page est active, affichée et appartenant au groupe indiqué
$menu_groupe[$v['group']][$k] = $v; // on rajoute une entrée pour chaque page static dans chaque groupe
}else{}
}
// étape 2: affichage du menu
foreach($menu_groupe as $k=>$v){ // on boucle sur les groupes
foreach($menu_groupe[$k] as $i=>$j){ // on boucle sur chaque page static du groupe
$url = $plxShow->plxMotor->urlRewrite('?static'.intval($i).'/'.$menu_groupe[$k][$i]['url']); // formatage de l'url
// gestion du status
if($plxShow->staticId()){ // si nous sommes sur une page static
$idStat = $plxShow->staticId(); // on récupère l'identifiant de la static active
// on compare cet identifiant avec celui du menu
if($idStat==intval($i)){ // s'il est égale à celui du menu, le status est actif
$status = "active";
} else {
$status = "no-active";
}
}else{
$status = "no-active";
}
echo "<li><a href=\"".$url."\" title=\"".plxUtils::strCheck($menu_groupe[$k][$i]['meta_description'])."\" class=\"".$status."\">".plxUtils::strCheck($menu_groupe[$k][$i]['name'])."</a></li>\n"; // création du lien vers la static
} // fin de la boucle des statics
} // fin de la boucle des groupes
}else{} // magique ! ^^^
?>
Pour voir le résultat www.ffe.be
Merci de partager vos remarques / suggestions...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Malheureusement il semble que le exclude ne fonctionne pas, mais là je n'ai pas osé toucher moi-même le moteur :-)