YOUR_THEMENAME_menu_tree__YOUR_MENUNAME无效

时间:2013-06-04 13:29:04

标签: drupal drupal-7 drupal-theming drupal-navigation

我有一个名为“Footer”的自定义菜单,机器可读的名称是“menu-footer”。 我想覆盖菜单的theme_menu_tree()函数。我的主题名称是“abc”,所以我尝试了abc_menu_tree__menu_footer(),但它无效。但是修改abc_menu_tree()是有效的,所以它必须与覆盖自定义菜单有关。

我检查了这个Question但它不起作用。 为了允许覆盖自定义菜单,我还需要做些什么吗?

提前感谢您的帮助。

编辑:

功能代码:

function abc_menu_tree__menu_footer($variables) {
  return '<nav class="sub-navigation"><ul>' . $variables['tree'] . '</ul></nav>';
}

abc_menu_link__menu_footer()也无法覆盖。在abc_menu_link()中,您可以检查上下文,因此这不是一个大问题。如果我检查元素的主题是否为“menu_link__menu_footer”,则它适用于菜单链接。

EDIT2:

我也无法覆盖主菜单的abc_menu_tree。 abc_menu_tree__main_menu无效。

1 个答案:

答案 0 :(得分:1)

要在主菜单上使用THEME_menu_tree,而不是使用THEME_menu_tree__main_menu(),您需要使用THEME_menu_tree__primary()

这是因为提供主链接的菜单在admin / structure / menu / settings中定义。

我在radix主题的radix_preprocess_page()函数中挖掘时想到了这一点,其中主菜单变量设置为使用variable_get()在page.tpl.php中使用。咄!很容易忘记那些微小的配置。

所以是的。 THEME_menu_tree__primary()和THEME_menu_tree__secondary()可能是您正在寻找的功能!