Fork me on GitHub






multiMenu : onglet actif
Semi pro
Inscrit: 05/02/2006 23:34
De Ile-de-France
Messages: 523
Bonjour,

A la suite de l’article de satanas « 2 hacks pour le modules multiMenu 1.9 »
(J’en profite pour remercier Satanas pour cet article !)

king76 nous signale qu’il a modifié multimenu pour que, lorsque l’on est sur un module, l’onglet actif correspondant à ce module soit d’une couleur différente.

Son site nous en donne un bel exemple…

Cette fonction m’intéresse beaucoup et je pense qu’elle va en intéresser plus d’un…

Si tu lis ce post king76 peux-tu nous indiquer la procédure ?


@+
Z

Posté le : 20/04/2007 12:04
Partager Twitter Partagez cette article sur GG+
Re: multiMenu : onglet actif
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
belle modif' !
ça pourrait être très utile !

Posté le : 20/04/2007 12:33
Partager Twitter Partagez cette article sur GG+
Re: multiMenu : onglet actif
Semi pro
Inscrit: 04/02/2003 09:04
De Qc.ca
Messages: 1389
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 !

Posté le : 19/05/2007 22:03
Partager Twitter Partagez cette article sur GG+
Re: multiMenu : onglet actif
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
merci pour ces détails soignés

Posté le : 20/05/2007 12:36
Partager Twitter Partagez cette article sur GG+
Re: multiMenu : onglet actif
Semi pro
Inscrit: 05/02/2006 23:34
De Ile-de-France
Messages: 523
Merci beaucoup !

@+
Z

Posté le : 28/05/2007 18:24
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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