Drupal 7 - 以编程方式在现场切换菜单

时间:2011-12-05 14:02:30

标签: drupal drupal-7 submenu

在Drupal 7中我希望有一个具有不同部分的网站,其左侧导航菜单会根据您所在的页面进行切换。例如,我想要一个顶级导航,将您带到一个部分,然后在该部分中,菜单对于它是唯一的。我假设我必须在template.php文件中创建一个主题函数来处理这个问题。有人能告诉我如何开始编码吗?

2 个答案:

答案 0 :(得分:4)

我不是100%肯定我会关注你,但如果我这样做,你可以使用菜单栏模块 - http://drupal.org/project/menu_block

如果你在谈论关卡:

如果您有一个包含多个级别的菜单,但只想在父项目具有第二级别的页面上显示第二级别,那么您将转到结构 - >块 - >新菜单块并选择您想要的菜单,从哪个菜单级别启动菜单,然后将其添加到您想要的常规块中。

一个例子是:

    <ul class="menu">
       <li>Menu item 1</li> 
       <li>Menu item 2</li> 
          <ul class="menu"> 
             <li>Menu item</li> 
             <li>Menu item</li> 
          </ul> 
       <li>Menu item 3</li> 
       <li>Menu item 4</li> 
       <li>Menu item 5</li> 
    </ul>

您的主菜单将在第一级显示菜单项。

您的菜单栏将设置为从第二级开始,因此如果您在菜单项2的页面上,您的菜单块将显示第二级菜单项。

如果你不是在谈论关卡:

您可以创建单独的菜单块,然后通过转到块的可见性设置,然后键入要显示的页面的节点别名,然后选择“单选按钮。

答案 1 :(得分:0)

我没有使用@SpaceBeers建议,而是使用Context来解决您的问题:

  • 我会为每个唯一页面定义一个不同的菜单。
  • 使用上下文,您可以将每个部分与菜单相关联。您可以为每个部分定义单独的上下文。
  • 在Context中,您可以在Context的规则中指定该部分的相对路径。然后在Context反应中,您将选择由菜单自动创建的Drupal块。

作为一个优点,因为上下文是可导出的,您可以将它们打包成Feature,将该功能提交到源控件存储库,然后将其部署到DEV,QA和PROD框中,而无需手动复制从服务器到服务器的菜单/块定位设置。换句话说,从长远来看,Context + Features解决方案将提供更强大和可扩展的解决方案。