YOUR_THEMENAME_menu_tree__YOUR_MENUNAME не работает

У меня есть пользовательское меню под названием "Нижний колонтитул", машиночитаемое имя "menu-footer". И я хочу переопределить функцию 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", она работает для ссылок меню.

Edit2:

Я не могу переопределить abc_menu_tree для главного меню тоже. abc_menu_tree__main_menu не работает.

1 ответ

Решение

Чтобы использовать THEME_menu_tree в основном меню, вместо использования THEME_menu_tree__main_menu(), вам нужно будет использовать THEME_menu_tree__primary()

Это связано с тем, что меню, предоставляющее основные ссылки, определено в admin/structure/menu/settings.

Я думал об этом, когда копался в функции radix_preprocess_page() темы radix, в которой переменная главного меню настроена для использования в page.tpl.php с помощью variable_get(). Duh! Так легко забыть об этих крошечных конфигурациях.

Так что да. THEME_menu_tree__primary() и THEME_menu_tree__secondary(), вероятно, те функции, которые вы ищете!

Другие вопросы по тегам