【问题标题】:Joomla: How to keep main menu item highlighted while navigating through separate submenu items?Joomla:如何在浏览单独的子菜单项时保持主菜单项突出显示?
【发布时间】:2011-09-21 17:44:50
【问题描述】:

我正在尝试制作一个水平的“类别”主菜单和一个垂直的子菜单,与主菜单分开。当我选择一个类别时,会显示其主页。但是当我从子菜单中选择另一个页面时,它应该来自同一类别,然后主菜单中的“类别”项目不再突出显示。所有菜单都定义为“独立”模块,我使用的是 Joomla 1.6.3。

【问题讨论】:

    标签: menu joomla menuitem menubar joomla1.6


    【解决方案1】:

    当时我不知道我应该将顶部菜单中的每个项目设置为菜单项别名。这使我可以在从子菜单中选择项目时保持项目突出显示。

    根据 Joomla 文档http://docs.joomla.org/Help16:Menus_Menu_Item_Manager_Edit#Menu_Item_Alias

    “此菜单项类型创建一个指向现有菜单项的链接。它允许 您在两个或多个不同的菜单上有相同的菜单项 无需复制设置。因此,例如,如果您更改 具有链接到它的别名的菜单项的参数,别名 将自动获取相同的更改。”

    对于那些像我以前一样,正在为 Joomla 菜单的想法而苦苦挣扎的人 - 这种配置中的主菜单位于“模块菜单”中,开始和结束级别设置为 1(基本选项),并且子菜单位于不同的“模块”中,但带有相同的菜单,但从第 2 级开始。

    【讨论】:

    • 这也适用于 Joomla 3.0。但要小心,我尝试了 1 天但没有成功,因为我在全局配置 Sef 中打开但使用 URL 重写关闭,并且 mod_menu/tmpl/default.php 没有正确获取 $aliasToId 变量
    【解决方案2】:

    任何类型的突出显示或效果都基于在通过 XML 创建菜单时分配的 CSS 类。如果您将每个菜单分开而不是一个大的层次结构,您可能会遇到问题。你的菜单结构应该在一个模块中使用层次结构。

    如果我们查看 Joomla 1.6 演示页面:hhttp://demo16.cloudaccess.net/index.php/using-joomla/extensions 我们可以看到“正在使用 Joomla!”是父级,“使用扩展是子级”。让我们看看分配给

    的 CSS 类
  • 对于每个链接

    使用 Joomla - class="active deep parent" 使用扩展 - class="current active deep parent"

    然后,您可以使用基于层次结构的 CSS Javascript 来控制格式

     li.parent li.current { CSS here } //do things based on the current
     li.active li.active { css here } // add an .active for each level down the hierarchy, for example to affect 3 ways in, require three li.actives in the hierarchical-selector  
    

    例如,以下是该页面上使用的一些 CSS 规则:

    ul.menu li.active a:link, ul.menu li.active a:visited { 
        color: #333333;
    }
    
    ul.menu li.active ul li.active a:link, ul.menu li.active ul li.active a:visited { 
         border-bottom-color: #ffffff;
         border-bottom-style: solid;
         border-bottom-width: 1px;
         border-left-color: currentColor;
         border-left-style: none;
         border-left-width: 0px;
         border-right-color: currentColor;
         border-right-style: none;
         border-right-width: 0px;
         border-top-color: currentColor;
         border-top-style: none;
         border-top-width: 0px;
         color: #333333;
     }
    

    如果您没有对所有内容都使用一个大菜单,那么父项将不会添加正确的 CSS 类,您将不得不执行更复杂的 javascript。

  • 【讨论】:

    • 这是一个很好的答案。太感谢了!我不知道子菜单可以与其父菜单分开。
    • 是的,您甚至可以从子级别开始并做很多事情,请查看此文档:docs.joomla.org/Creating_a_submenu#Separate_Menu_Modules(我很确定这适用于 1.5 和 1.6)
    • 感谢您的回答,但后来我意识到我正在寻求不同的解决方案:菜单项别名。这就像我想要的那样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多