créer une liste déroulante avec les pages statiques

bonjour à tous

Actuellement j'ai un menu créé automatiquement avec les pages statiques :

<nav role="navigation">

<div class="content">

<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</a></li>'); ?>
</ul>

</div>
</nav>

Donc si je comprends bien, le code affiche le HOME, puis toutes les autres pages statiques.
Mais parmis les pages statiques, il y en a une (que l'on va appeller PRODUITS) qui va contenir 3 autres pages (que j'ai créé en statique, en masqué).

Comment puis je faire pour que ces 3 pages se déroulent dès que je passe la souris sur PRODUITS ?

Je vous remercie de votre aide

Réponses

  • ZalianZalian Member
    octobre 2013 modifié
    Bonjour Ickyknox !

    Merci d'avoir posé la question, je me retrouve avec le même problème. J'ai essayé de bidouiller mais rien à faire. J'ai utilisé ce code de Paul VINCENT (http://bodieu.fr/accueil/index.php?article3/) :

    Remplacer dans le fichier Class.plx.Show.php :
    [== PHP ==]
    $group = str_replace('#group_name',plxUtils::strCheck($v['group']),$group);
    

    par
    [== PHP ==]
     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);
    

    Et en ajoutant un echo '</ul>' à la fin du while. Malheureusement, dès le premier groupe le <ul> du sous groupe englobe tous les liens d'après... J'ai essayé en rajoutant et enlevant le bout de code pour les groupes (http://www.pluxml.org/article41/utiliser-la-fonction-groupe-des-pages-statiques) :
    [== HTML ==]
    '<li id=#group_id" class="#group_class">#group_name</li>');
    

    Mais le résultat est le même.

    Si quelqu'un à une idée.

    EDIT : J'ai regardé aussi par ici (http://www.samare.net/article8/menu-listant-les-articles-classes-par-categories), mais je ne comprends pas vraiment le code, je ne vois pas comment englobe-t-il les <ul> dans ces <li> de groupe, comme pour sa catégorie "Le site" qui affiche "About" et "Contact" en liste déroulante (sur son site). C'est ce qui me faudrait.


    Merci d'avance !

    Zal
  • Bonjour,

    Déjà plus de 15h que j'y suis, en essayant de modifier la fonction staticlist du fichier class.plx.show, et je galèèère. J'ai failli réussir, mais le problème reste le même avec le </ul> qui est impossible de refermer à cause du "pré-traitement", de l'affichage du menu après la boucle.

    Voilà ce que j'ai essayé de faire, dans le foreach à la place de :
    [== PHP ==]
    					if(!empty($v['group']) AND $group_name!=$v['group']) {
    						$group = str_replace('#group_id','static-group-'.plxUtils::title2url($v['group']),$format_group);
    						$group = str_replace('#group_class','static-group',$group);
    						$group = str_replace('#group_name',plxUtils::strCheck($v['group']),$group);
    						$menus[] =  $group;
    					}
    					$stat = str_replace('#static_id','static-'.intval($k),$format);
    					if(empty($v['group']))
    						$stat = str_replace('#static_class','static-group',$stat);
    					else
    						$stat = str_replace('#static_class','static-menu',$stat);
    					if(plxUtils::checkSite($v['url'],false))
    						$stat = str_replace('#static_url',$v['url'],$stat);
    					else
    						$stat = str_replace('#static_url',$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
    					$stat = str_replace('#static_name',plxUtils::strCheck($v['name']),$stat);
    					$stat = str_replace('#static_status',(($home===false AND $this->staticId()==intval($k))?'static active':'noactive'), $stat);
    					$menus[] =  $stat;
    					$group_name=$v['group']; # pour gérer la rupture au niveau de l'affichage 
    

    J'ai essayé de faire :
    [== PHP ==]
    					if (!empty($v['group'])) { #si y'a un groupe
    						if ($group_name!=$v['group']) { #si c'est le premier lien du groupe, la catégorie donc, on affiche le lien avec le format_group (ou j'ai changé le <li> par le <ul>)
    						   $group = str_replace('#group_id',plxUtils::title2url($v['group']),$format_group); 
    						   $group = str_replace('#group_class','static-group-'.intval($k).'',$group); 
    						   $group = str_replace('#group_name',plxUtils::strCheck($v['group']),$group);
    						   $menus[] =  $group;
    							}
    						elseif ($group_name==$v['group']) { #si le lien est une sous-liste de la catégorie
    						  $stat = str_replace('#static_id', 'static-group'.plxUtils::title2url($v['group']).'-'.intval($k),$format); #on affiche le lien avec format (donc des <li>) dans le <ul>!
    						if(plxUtils::checkSite($v['url'],false))
    						  $stat = str_replace('#static_url',$v['url'],$stat);
    						else
    						$stat = str_replace('#static_url',$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
    						$stat = str_replace('#static_name',plxUtils::strCheck($v['name']),$stat);
    						$stat = str_replace('#static_status',(($home===false AND $this->staticId()==intval($k))?'static active':'noactive'), $stat);
    						$menus[] =  $stat; }} 
    
    					if(empty($v['group'])){ #si y'a pas de groupe :
    						if (!empty($group_name)) { echo '</ul>';} #et si le group_name n'est PAS vide (vu qu'il ne se vide qu'après la fin de traitement d'une nouvelle donnée (d'un nouveau lien) qui n'a pas de groupe) et qui annonce donc la fin de la sous-liste de la catégorie ALORS on ferme le groupe ! Et c'est là que ça fail, voir screen...
    						else { #sinon on affiche les liens normaux..
    						    $stat = str_replace('#static_id','static-'.intval($k),$format);
    						    $stat = str_replace('#static_class','static-group',$stat);
    							if(plxUtils::checkSite($v['url'],false)) 
    							    $stat = str_replace('#static_url',$v['url'],$stat); 
    							    else {
    							    $stat = str_replace('#static_url',$this->plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
    							    $stat = str_replace('#static_name',plxUtils::strCheck($v['name']),$stat);
    							    $stat = str_replace('#static_status',(($home===false AND $this->staticId()==intval($k))?'static active':'noactive'), $stat);
    							    $menus[] =  $stat; }}}
    					$group_name=$v['group']; #pour gérer la rupture au niveau de l'affichage 
    

    Ce qui donne :

    0EF7qrM.png

    D'abord un <ul></ul> vide (à cause du "pré-traitement"), et l'ul qui englobe toutes les pages restantes quand même...
    J'ai vu donc vu le "echo implode('', $menus);" à la fin de la boucle et j'ai compris le problème pour le </ul> qui s'affiche au début avant même l'accueil...

    J'ai tout essayé, jusqu'au boucle dans le foreach (pour vous dire), rien à faire. Et avec une meilleur compréhension du fonctionnement du code avec le implode, je ne sais plus par quel bout prendre le code... Dois-je rajouter une variable dans aStats pour distinguer le début et la fin d'une sous-liste? Dois-je tout remanier entièrement la fonction, mais par quel bout? Un amateur serait largement se débrouiller et régler le prob en 2 secondes, mais moi avec mon petit niveau en php ou je n'avais encore jamais fais de POO, je galère trop D:

    Si quelqu'un saurait mettre les mains dans le cambouis avec moi, ça serait vachement cool !

    Merci d'avance,

    Cordialement,

    Zal
  • JosJos Member
    En attendant une solution plus pratique, tu peu toujours créer un menu déroulant en CSS classique, et ajouter tes liens de pages à la main.
Connectez-vous ou Inscrivez-vous pour répondre.