【发布时间】:2010-09-10 11:29:05
【问题描述】:
我想创建一个动态菜单,从某个节点类型获取它的项目。我想我可以通过创建标题视图并将其放在一个块中来做到这一点。但是,当有人单击其中一个标题时,我想突出显示它,因此想要一种将活动类添加到链接的方法。我知道 Drupal 会自动为菜单执行此操作,但我可以为基于视图的菜单执行此操作吗?
【问题讨论】:
我想创建一个动态菜单,从某个节点类型获取它的项目。我想我可以通过创建标题视图并将其放在一个块中来做到这一点。但是,当有人单击其中一个标题时,我想突出显示它,因此想要一种将活动类添加到链接的方法。我知道 Drupal 会自动为菜单执行此操作,但我可以为基于视图的菜单执行此操作吗?
【问题讨论】:
为什么不将 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;
【讨论】:
我不确定您对“动态菜单”的要求,但标题视图的替代方法可能是设置自定义菜单,然后在创建这些节点时将它们设置为节点编辑表单中的那个菜单。然后在块中显示该菜单你应该得到你想要的活动项目的突出显示。
【讨论】: