Fork me on GitHub

Rapport de message :*
 

Re: multiMenu : onglet actif

Titre du sujet : Re: multiMenu : onglet actif
par king76 sur 19/05/2007 22:03:30

Allo

Désolé pour le délais, je fais moins de Xoops à présent..

Effectivement j'ai eu recours à plusieurs reprises à modifier multimenu pour faire cet effet, car c'est primordial à mes yeux. Toutefois mon hack ne permet pas par exemple de changer la couleur des sous liens, car il faudrait pour cela que le li du deuxième niveau englobe le tout comme cela se fait generalement du genre :

<ul>
 <
li>premier lien</li>
 <
li>deuxieme lien
  
<ul>
   <
li>sous lien</li>
   <
li>sous lien</li>
  </
ul>
 </
li>
</
ul>


Pour mon hack si je me refere à ce site (car le hack peut différé suivant ce que l'on souhaite faire si c'est juste tester le module en cours ou la page en cours), me semble que ca ressemble à ca :

Fichier : modules/multiMenu/blocks/block.php

Note : Dans ce cas de figure j'ai testé l'url de la page en entière et pas uniquement sur quel module je me trouve.

Lignes à ajouter après cette partie :

// Target function
if ($myrow['target'] != '_self') { $target 'target="'.$myrow['target'].'" '; } else { $target ' '; }
    
$imenu['target'] = $target
    
$imenu['target_context'] = $myrow['target']; // utilisé dans le menu contextuel 2

// Create link
    
$imenu['link'] = '<a href="'.$link.'" '.$target.'title="'.$alt_title.'">';
    
$imenu['linkurl'] = $link;
    
$imenu['a'] = '</a>';
} else {
    
$imenu['link'] = '';
    
$imenu['linkurl'] = '';
    
$imenu['a'] = '';
}


J'ai ajouté ceci :

// Lien actif en cours
$imenu['activelink'] = 0;
 if (!empty(
$xoopsModule)) {
  if (
"http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']==$link$imenu['activelink'] = 1;
 }


pour tester uniquement le module en cours, ca doit etre ca :
if (eregi("/".$xoopsModule->getVar('dirname')."/",$link)) $imenu['activelink'] = 1;


Ensuite vu qu'on indique deux états : Lien actif ou non, il faut reprendre le tout dans le template, mais la faut en mettre partout, donc je vous balance le template en entier ce sera plus simple pour moi ;)

Template : multimenu_menu.html
<!-- Start multiMenu <{$block.mm}> -->
<{
assign var=td value=-1}>
    <
table cellspacing="0" cellpadding="0">
    <
tr>
    <
td id="mainmenu" width="<{if $block.columns>1}><{math equation="x/y" x=100 y=$block.columns }><{else}>100<{/if}>%">
<{foreach 
item=imenu from=$block.contents}>
<{if 
$imenu.submenu == 0}>
    <{
assign var=td value=$td+1}>
    <{if 
$td $block.columns_limit}>
        </
td>
        <
td id="mainmenu" width="<{if $block.columns>1}><{math equation="x/y" x=100 y=$block.columns }><{else}>100<{/if}>%">
        <{
assign var=td value=0}>
    <{/if}>
<{if 
$td == or $top == 1}>
<{if 
$imenu.activelink == }><span class="menuSelect"><{/if}>
    <
class="menuTop" <{if $imenu.link}>href="<{$imenu.linkurl}>" <{$imenu.target}><{/if}>title="<{$imenu.alt_title}>"><{$imenu.image}><{$imenu.title}></a>
<{if 
$imenu.activelink == 1}></span><{/if}>
<{
assign var="top" value="0"}><{counter print=false assign=count}>
<{else}> 
<{if 
$imenu.activelink == }><span class="menuSelect"><{/if}>
    <
class="menuMain" <{if $imenu.link}>href="<{$imenu.linkurl}>" <{$imenu.target}><{/if}>title="<{$imenu.alt_title}>">
<{
$imenu.image}><{$imenu.title}></a>
<{if 
$imenu.activelink == 1}></span><{/if}>
<{/if}>

<{elseif 
$imenu.submenu == OR $imenu.submenu == 2}>
<{if 
$top == 1}>
    <
class="menuSubTop" <{if $imenu.link}>href="<{$imenu.linkurl}>" <{$imenu.target}><{/if}>title="<{$imenu.alt_title}>"><{$imenu.image}><{$imenu.title}></a>
<{
assign var="top" value="0"}>
<{else}>
<{if 
$imenu.activelink == }><span class="menuSubSelect"><{/if}>
    <
class="menuSub" <{if $imenu.link}>href="<{$imenu.linkurl}>" <{$imenu.target}><{/if}>title="<{$imenu.alt_title}>"><{$imenu.image}><{$imenu.title}></a>
<{if 
$imenu.activelink == 1}></span><{/if}>
<{/if}>
<{elseif 
$imenu.submenu == 3}>
    <{if 
$imenu.link}><class="menuNote" href="<{$imenu.linkurl}>" <{$imenu.target}>title="<{$imenu.alt_title}>"><{/if}><{$imenu.image}><{$imenu.title}></a>
<{
assign var="top" value="1"}>
<{elseif 
$imenu.submenu == 4}>

    <{
assign var=td value=$td+1}>
    <{if 
$td $block.columns_limit}>
        </
td>
        <
td id="mainmenu" width="<{if $block.columns>1}><{math equation="x/y" x=100 y=$block.columns }><{else}>100<{/if}>%">
        <{
assign var=td value=0}>
    <{/if}>

    <
h3><{$imenu.link}><{$imenu.image}><{$imenu.title}><{$imenu.a}></h3>
<{
counter print=false assign=count}>
<{
assign var="top" value="1"}>
<{/if}>

<{/foreach}>
</
td>
</
tr>
</
table>
<!-- 
End multiMenu <{$block.mm}> -->


Et le css pendant qu'on y est :

/* Menu actif en cours */
#mainmenu span.menuSelect a {
    
font-size10px
    
displayblock;
    
background-color:#80cbf1;
    
background-image:url(images/main.gif);
    
background-position:left center;
    
background-repeat:no-repeat;
    
padding-left19px;
}

#mainmenu span.menuSubSelect a.menuSub {
    
font-size10px
    
displayblock;
    
background-color:#80cbf1;
    
padding-left26px;
}

td#mainmenu a.menuSub {
    
font-size10px
    
padding-left26px
    
background-color:#cceffc; 
}

td#mainmenu a.menuSub:hover {
    
background-color:#80cbf1;
    
text-decoration:none;
}


J'espere que ca donnera des idées au développeur pour ajouter cette fonctionnalité en offrant bien plus (notamment les sous menus..)

Merci pour leur travail !
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

35 Personne(s) en ligne (24 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 35 | Plus ...