我有一个名为“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无效。
答案 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()可能是您正在寻找的功能!