在Joomla - 限制特定项目的菜单深度?

时间:2014-03-26 15:52:33

标签: joomla joomla3.2

在Joomla 3中 - 如果我的菜单结构是:

  • 关于

    • 子项目1
    • 子项目2
  • 产品

    • 子项目1
      • 第1项
    • 子项目2

如何限制菜单的深度?对于Instance,如果我只想要“关于”转到第1级,“产品”转到第3级?无论如何我可以单独设置吗?

我知道我可以使用: “display:none;”对于子菜单。

然而 - 使用响应式框架(如基础或引导程序)不起作用,因为“has-dropdown”类会触发移动设备的下拉菜单。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

两个选项:

  1. 按原样保留菜单,并在第一个菜单中创建第二个带有别名的菜单,其中只包含您想要的页面。这是我使用的方法,其中第一个菜单是站点地图,第二个(和第三个等)用于导航菜单。

  2. 在您用来显示菜单的模块上,有一个限制链接级别的选项。但这适用于整个菜单。

答案 1 :(得分:0)

答案是您需要取消发布顶级菜单项关于您想要显示的子菜单项。我知道你回应 ilias 说这会打破SEF,但事实并非如此。继续并取消发布子菜单项faq,并刷新主页以验证子菜单不再出现。现在,导航到网址http://www.mysite.com/about/faq,然后看到页面仍然呈现。

在HTML呈现过程中mod_menu模块使用un-publish,创建的MVC路径仍然有效。这是一个很好的“最佳实践”,可以将SEF添加到没有菜单标题的专用页面,以创建未发布的菜单条目来静默管理SEF。

希望有帮助...

答案 2 :(得分:0)

好的 - 我们正在使用Foundation 3.2.5和Joomla - 这是我们的解决方案:

  1. 在J3.2中 - 您可以在每个菜单的a中添加一个类 - 我们添加了" off"
  2. 我们将a.off的css写成:.dropdown.off {display: none !important;} .top-bar ul>li.has-dropdown a.off:after {display: none;} .top-bar ul>li.has-dropdown a.off { padding-right: 10px; }
  3. 当我们使用基础3.2时,我们重写了js - 所以当a.off类存在时 - 它将转到实际链接:/* jQuery Foundation Top Bar 2.0.4 http://foundation.zurb.com Copyright 2012, ZURB Free to use under the MIT license. http://www.opensource.org/licenses/mit-license.php */ /*jslint unparam: true, browser: true, indent: 2 */ (function(e,t,n){"use strict";var r={index:0,initialized:!1},i={init:function(n){return this.each(function(){r=e.extend(r,n),r.$w=e(t),r.$topbar=e("nav.top-bar"),r.$section=r.$topbar.find("section"),r.$titlebar=r.$topbar.children("ul:first");var s=e("<div class='top-bar-js-breakpoint'/>").appendTo("body");r.breakPoint=s.width(),s.remove(),r.initialized||(i.assemble(),r.initialized=!0),r.height||i.largestUL(),r.$topbar.parent().hasClass("fixed")&&e("body").css("padding-top",r.$topbar.outerHeight()),e(".top-bar .toggle-topbar").off("click.fndtn").on("click.fndtn",function(e){e.preventDefault(),i.breakpoint()&&(r.$topbar.toggleClass("expanded"),r.$topbar.css("min-height","")),r.$topbar.hasClass("expanded")||(r.$section.css({left:"0%"}),r.$section.find(">.name").css({left:"100%"}),r.$section.find("li.moved").removeClass("moved"),r.index=0)}),e(".top-bar .has-dropdown>a:not(.off)").off("click.fndtn").on("click.fndtn",function(t){(Modernizr.touch||i.breakpoint())&&t.preventDefault();if(i.breakpoint()){var n=e(this),s=n.closest("li");r.index+=1,s.addClass("moved"),r.$section.css({left:-(100*r.index)+"%"}),r.$section.find(">.name").css({left:100*r.index+"%"}),n.siblings("ul").height(r.height+r.$titlebar.outerHeight(!0)),r.$topbar.css("min-height",r.height+r.$titlebar.outerHeight(!0)*2)}}),e(t).on("resize.fndtn.topbar",function(){i.breakpoint()||r.$topbar.css("min-height","")}),e(".top-bar .has-dropdown .back").off("click.fndtn").on("click.fndtn",function(t){t.preventDefault();var n=e(this),i=n.closest("li.moved"),s=i.parent();r.index-=1,r.$section.css({left:-(100*r.index)+"%"}),r.$section.find(">.name").css({left:100*r.index+"%"}),r.index===0&&r.$topbar.css("min-height",0),setTimeout(function(){i.removeClass("moved")},300)})})},breakpoint:function(){return r.$w.width()<r.breakPoint},assemble:function(){r.$section.detach(),r.$section.find(".has-dropdown>a").each(function(){var t=e(this),n=t.siblings(".dropdown"),r=e('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');r.find("h5>a").html(t.html()),n.prepend(r)}),r.$section.appendTo(r.$topbar)},largestUL:function(){var t=r.$topbar.find("section ul ul"),n=t.first(),i=0;t.each(function(){e(this).children("li").length>n.children("li").length&&(n=e(this))}),n.children("li").each(function(){i+=e(this).outerHeight(!0)}),r.height=i}};e.fn.foundationTopBar=function(t){if(i[t])return i[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return i.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.foundationTopBar")};if(e(".sticky").length>0){var s=e(".sticky").length?e(".sticky").offset().top:0,o=e(t);o.scroll(function(){o.scrollTop()>=s?e(".sticky").addClass("fixed"):o.scrollTop()<s&&e(".sticky").removeClass("fixed")})}})(jQuery,this);