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 == 0 or $top == 1}>
<{if $imenu.activelink == 1 }><span class="menuSelect"><{/if}>
<a 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 == 1 }><span class="menuSelect"><{/if}>
<a 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 == 1 OR $imenu.submenu == 2}>
<{if $top == 1}>
<a 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 == 1 }><span class="menuSubSelect"><{/if}>
<a 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}><a 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-size: 10px;
display: block;
background-color:#80cbf1;
background-image:url(images/main.gif);
background-position:left center;
background-repeat:no-repeat;
padding-left: 19px;
}
#mainmenu span.menuSubSelect a.menuSub {
font-size: 10px;
display: block;
background-color:#80cbf1;
padding-left: 26px;
}
td#mainmenu a.menuSub {
font-size: 10px;
padding-left: 26px;
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 !