[5.0] Menu horizontal avec groupe

Bonjour,
comme il est dit dans le titre je voudrais créer un menu horizontal avec les groupes de pages statiques, le but étant de faire un menu avec liste déroulante via le CSS. J'ai réussi à faire ce que je voulais mais le seul problème est lorsque la page qui appartient à un groupe n'est pas activée, cela affiche le nom du groupe alors qu'aucune page n'est affiché. Ce quelqu'un a une piste, une idée, enfin n'importe quoi qui pourrait m'aidé je suis preneur parce que là je ne vois franchement pas comment faire :(.

Voici la classe que j'utilise pour afficher le nouveau menu :
<?php

/**
 * Classe plxPlugin responsable de l'affichage des plugins sur stdout
 *
 * @package PLX
 * @author	Anthony T.
 **/
class plxPlugin {

	public $plxMotor = false; # Objet plxMotor
	public $aStats = array(); # Tableau de toutes les pages statiques

	/**
	 * Constructeur qui initialise l'objet plxMotor par référence
	 *
	 * @param	plxMotor	objet plxMotor passé par référence
	 * @return	null
	 * @author	Florent MONTHEL
	 **/
	public function __construct(&$plxMotor) {

		$this->plxMotor = &$plxMotor;
		# Génération du tableau des pages statiques pour gérer les groupes plus proprement
		if($this->plxMotor->aStats) {
			foreach($this->plxMotor->aStats as $k=>$v){
				if(!empty($v['group'])){
					$this->aStats[$v['group']][$k] = $v;
				}else{
					$this->aStats[$k] = $v;
				}
			}
		}
	}
	
	public function menuList(){
		echo '<li><a href="'.$this->plxMotor->urlRewrite().'">Accueil</a></li>';
		if($this->aStats) {
			foreach($this->aStats as $k=>$v) {
				if(!isset($v['name'])){// C'est un groupe
					echo '<li>'.$k.'<ul class="sousMenu">';
					foreach($v as $g=>$p){
						if($p['active'] == 1 AND $p['menu'] == 'oui'){
							echo '<li><a href="'.$this->plxMotor->urlRewrite('?static'.intval($g).'/'.$p['url']).'">'.plxUtils::strCheck($p['name']).'</a></li>';
							}
					}
					echo '</ul></li>';
				}else{
					if($v['active'] == 1 AND $v['menu'] == 'oui'){
						echo '<li><a href="'.$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']).'">'.plxUtils::strCheck($v['name']).'</a></li>';
					}
				}
			}
		}
	}
}

$plxPlugin = new plxPlugin($plxMotor);
?>
Pour afficher le menu :
<ul id="menuDeroulant">
	<?php $plxPlugin->menuList(); ?>
</ul>

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour fightsoul

    Je viens de regarder:

    Dans un groupe quand il n'y a aucune page à afficher (soit elles sont inactives, soit elles sont masquées), le nom du groupe n'est pas affiché.
    Est-ce que c'est ce que tu veux ? J'ai peut etre mal compris sinon ton besoin

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour,
    Stéphane en faite ce que je veux faire est assez simple c'est un menu avec liste déroulante en claire le code html devrait ressembler à ça :
    <ul>
    	<li><a href="#">Accueil</a></li>
    	<li>Groupe 1 
    		<ul>
    			<li><a href="#">Statique 1</a></li>
    			<li><a href="#">Statique 2</a></li>
    		</ul>
    	</li>
    	<li><a href="#">Statique 3</a></li>
    </ul>
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour fightsoul

    En effet la fonction staticList ne formate pas le code html de cette façon.
    Soit tu écris ta fonction pour avoir le code html dont tu as besoin, soit tu arrives à adapter ton système de menu déroulant à ce qui existe sachant que la classe css utilisée est différente pour l'affichage du nom du groupe et l'affichage du menu de la page statique.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • PaulPaul Member
    septembre 2010 modifié
    J'ai apporté une modification la fonction staticList pour avoir un menu déroulant.
    Voici le résultat : http://www.bodieu.fr/accueil/
    Mais il faut Pluxml 5.01 et le theme-mystique du 15 août 2010. Les autres thèmes ne marchent pas.



    fichier class.plx.show.php

    function staticList

    remplacer la ligne 0965
    $group = str_replace('#group_name',plxUtils::strCheck($v['group']),$group);
    
    par
    if ($group_name=='')   $group = str_replace('#group_name',plxUtils::strCheck($v['group']).'<ul><li>',$group);
                     else    $group = str_replace('#group_name','</ul><li>'.plxUtils::strCheck($v['group']).'<ul><li>',$group);
    
    après la fin du while, ligne 0980 insérer
    echo '</lu>';
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bel effet visuel sur les menus déroulants

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Le générateur de menu déroulant : http://css3menu.com/ donne de bons résultats. Il pourrait faciliter la prise en compte des menus déroulants pour les différents thèmes de Pluxml.
Connectez-vous ou Inscrivez-vous pour répondre.