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(), вероятно, те функции, которые вы ищете!