0

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

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

提前感谢您的帮助。

编辑:

函数代码:

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”,则它适用于菜单链接。

编辑2:

我也不能覆盖主菜单的 abc_menu_tree。abc_menu_tree__main_menu 不起作用。

4

1 回答 1

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() 可能是您正在寻找的功能!

于 2013-11-12T10:22:03.620 回答