1

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

4

2 回答 2

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

如果您不是在谈论级别:

您可以制作单独的菜单块,然后将它们设置为仅出现在某些页面上,方法是转到块的可见性设置,然后键入您希望它出现的页面的节点别名,然后从单选按钮中选择“仅列出的页面” .

于 2011-12-05T14:15:30.710 回答
0

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

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

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

于 2011-12-06T18:20:33.087 回答