Submitted by renardchan on
Bonjour,
Pour le développement de mon site web, j'ai choisi d'utiliser le thème danland. Cependant, j'ai problème dans la configuration du superfish menu. Lorsque je "déplis" un menu, le titre parent se déplie lui aussi (cf l'image jointe, l'élément parent "qui sommes-nous" est doublé).
Voici, ci dessous, le code javascript du superfish menu. Je ne parviens pas à identifier le paramètre ou la variable à intégrer au menu déroulant.
// $Id: superfish.js,v 1.1 2010/07/19 22:25:16 danprobo Exp $
/*
* Superfish v1.4.8 - jQuery menu widget
* Copyright (c) 2008 Joel Birch
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
*/
;(function($){
$.fn.superfish = function(op){
var sf = $.fn.superfish,
c = sf.c,
$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')),
over = function(){
var $$ = $(this), menu = getMenu($$);
clearTimeout(menu.sfTimer);
$$.showSuperfishUl().siblings().hideSuperfishUl();
},
out = function(){
var $$ = $(this), menu = getMenu($$), o = sf.op;
clearTimeout(menu.sfTimer);
menu.sfTimer=setTimeout(function(){
o.retainPath=($.inArray($$[0],o.$path)>-1);
$$.hideSuperfishUl();
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
},o.delay);
},
getMenu = function($menu){
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
sf.op = sf.o[menu.serial];
return menu;
},
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
return this.each(function() {
var s = this.serial = sf.o.length;
var o = $.extend({},sf.defaults,op);
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
$(this).addClass([o.hoverClass,c.bcClass].join(' '))
.filter('li:has(ul)').removeClass(o.pathClass);
});
sf.o[s] = sf.op = o;
$('li:has(ul)',this)($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'.each(function() {
if (o.autoArrows) addArrow( $('>a:first-child',this) );
})
.not('.'+c.bcClass)
.hideSuperfishUl();
var $a = $('a',this);
$a.each(function(i){
var $li = $a.eq(i).parents('li');
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
});
o.onInit.call(this);
}).each(function() {
var menuClasses = [c.menuClass];
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
$(this).addClass(menuClasses.join(' '));
});
};
var sf = $.fn.superfish;
sf.o = [];
sf.op = {};
sf.IE7fix = function(){
var o = sf.op;
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
this.toggleClass(sf.c.shadowClass+'-off');
};
sf.c = {
bcClass : 'sf-breadcrumb',
menuClass : 'sf-js-enabled',
anchorClass : 'sf-with-ul',
arrowClass : 'sf-sub-indicator',
shadowClass : 'sf-shadow'
};
sf.defaults = {
hoverClass : 'sfHover',
pathClass : 'overideThisToUse',
pathLevels : 1,
delay : 800,
animation : {opacity:'show'},
speed : 'normal',
autoArrows : true,
dropShadows : true,
disableHI : false, // true disables hoverIntent detection
onInit : function(){}, // callback functions
onBeforeShow: function(){},
onShow : function(){},
onHide : function(){}
};
$.fn.extend({
hideSuperfishUl : function(){
var o = sf.op,
not = (o.retainPath===true) ? o.$path : '';
o.retainPath = false;
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
.find('>ul').hide().css('visibility','hidden');
o.onHide.call($ul);
return this;
},
showSuperfishUl : function(){
var o = sf.op,
sh = sf.c.shadowClass+'-off',
$ul = this.addClass(o.hoverClass)
.find('>ul:hidden').css('visibility','visible');
sf.IE7fix.call($ul);
o.onBeforeShow.call($ul);
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
return this;
}
});
})(jQuery);
Par avance merci.
Bonjour, ce commentaire vient
Permalien Soumis par paradixe le 15 Mars, 2011 - 09:57
Bonjour,
ce commentaire vient peut-être un peu tard, sans doute l'apparition de l'élément parent vient de la configuration de DHTML MENU où l'option "Ajouter un lien en plus pour atteindre la page du menu père" a été selectée.
Ok à tester. Pour corriger le
Permalien Soumis par renardchan le 15 Mars, 2011 - 18:48
Ok à tester. Pour corriger le problème j'ai préféré utiliser le module superfish menu, qui m'a permis de mieux maîtriser la configuration
J’ai testé la modification de
Permalien Soumis par paradixe le 16 Mars, 2011 - 10:02
J'ai testé la modification de DHTML menu qui impacte bien le superfish menu utilisé dans le thème Danland. Mais dans ce cas on n'accède plus au parent (à moins d'activer le double click dans DHTML menu, ce qui est un peu galère à mon avis.
Le conseil de budasam me parait également judicieux, je vais également le tester.
Bon courage.
Salut, j’utilise aussi ce
Permalien Soumis par budasam le 15 Mars, 2011 - 20:27
Salut,
j'utilise aussi ce module dont l'effet est très sympa. Je le couple avec le module menu item container (http://drupal.org/project/menu_item_container) qui permet de créer un élément de menu sans que celui-ci soit un lien vers une page existante mais seulement le titre d'une rubrique. D'où le nom du module.
Et puisqu'il n'y a pas de page derrière ton élément de menu il y a des chances pour que ton doublon disparaisse.
En espérant que ça te serve.