Drupal 创建具有 Active Trail 属性的动态菜单

Posted

技术标签:

【中文标题】Drupal 创建具有 Active Trail 属性的动态菜单【英文标题】:Drupal Create Dynamic Menu with an Active Trail Property 【发布时间】:2010-09-10 11:29:05 【问题描述】:

我想创建一个动态菜单,从某个节点类型获取它的项目。我想我可以通过创建标题视图并将其放在一个块中来做到这一点。但是,当有人单击其中一个标题时,我想突出显示它,因此想要一种将活动类添加到链接的方法。我知道 Drupal 会自动为菜单执行此操作,但我可以为基于视图的菜单执行此操作吗?

【问题讨论】:

【参考方案1】:

为什么不将 Andrews 的想法与 hook_form_alter 结合使用呢?这样的事情会起作用:

假设您的内容类型称为“mycontent”:

在您的内容类型设置下,将允许的菜单父级设置为仅包含您想要的菜单,我们将其称为“自定义”。在您的模块文件中添加以下代码:

mymodule_form_alter(&form, &$form_state, $form_id)
  if($form_id=="mycontent_node_form")
    $form['menu']['enabled']['#default_value'] = 1;
    $form['menu']['link']['parent']['#default_value'] = "menu-custom:0";
  

所以,$form_id 应该等于“[my_content_type]_node_form”,而 parent 的默认值应该等于“menu-[my_menu]:0”

如果您担心用户不会将他们的内容添加到菜单中,则此行将取消他们对表单项的控制:

$form['menu']['#disabled']=true;

【讨论】:

嗨,特雷,非常感谢您的帖子。这听起来是个不错的方法。似乎它也可以解决我自动向菜单添加新内容的问题。【参考方案2】:

我不确定您对“动态菜单”的要求,但标题视图的替代方法可能是设置自定义菜单,然后在创建这些节点时将它们设置为节点编辑表单中的那个菜单。然后在块中显示该菜单你应该得到你想要的活动项目的突出显示。

【讨论】:

您好 Andrew,感谢您抽出宝贵时间回答我的问题。如果人们创建了一个新页面,我需要菜单自动生成链接,所以我不能使用标准菜单。我已经通过使用标题视图解决了这个问题。这些实际上自动包含一个活动类,我没有意识到他们这样做了。

以上是关于Drupal 创建具有 Active Trail 属性的动态菜单的主要内容,如果未能解决你的问题,请参考以下文章

向Drupal菜单项添加唯一ID

Drupal 7 视图显示具有相同分类术语的节点

Drupal 7 - 具有关系和过滤器问题的视图

具有节点引用和 cck3 多组字段的 Drupal 视图

提交令牌在 Drupal 7 的 Webform 中不作为密钥,它具有价值

如何在 drupal 7 站点中创建不同的页面样式?