2011-12-05 124 views
1

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

回答

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的页面上,你的菜单块会显示二级菜单项。

如果你不是在谈论级别:

你可以单独的菜单块,然后将它们转到块的可见性设置,然后键入的节点别名设置为只出现在某些网页页面上,并从单选按钮中选择“仅列出的页面”。

+0

我不是在谈论关卡,但这是有帮助的。假设我有一个关于我们的部分,另一个部分叫做程序,当您在网站的这些部分时,我需要不同的菜单。 – bradrice

+0

好的,看答案底部的新部分。 – SpaceBeers

+0

在这种情况下,您将创建两个1级菜单。关于我们和计划。然后在每个菜单下添加子菜单项并在答案中使用该模块。 我已在此页面上使用它:http://www.samsound.se/reklamproduktion与http://www.samsound.se/portfolio相比较 – Kristoffer

0

而不是使用@SpaceBeers的建议,我会解决使用Context您的问题:

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

作为一个加号,因为上下文是出口品,你可以把它们打包成一个Feature,提交该功能为您的源代码控制库,并部署到您的DEV,QA和PROD箱,而不必手动复制从服务器到服务器的菜单/块定位设置。换句话说,Context + Features解决方案将长期提供更强大和可扩展的解决方案。