Программный вывод меню с дочерними элементами в шаблоне
Опубликовано в пт, 10/09/2015 - 09:53
Миллион раз встаю на грабли, что при выводе в шаблоне главного меню, используя кусок кода из эталонного page.tpl.php, который лежит в modules/system, а именно:
<?php
print theme('links__system_main_menu', array('links' => $main_menu, 'attributes' => array('id' => 'main-menu', 'class' => array('links', 'inline', 'clearfix')), 'heading' => t('Main menu')));
?>
не выводятся дочерние элементы меню, хотя в настройках меню (admin/structure/menu/manage/main-menu) у пунктов стоят галочки "Показывать раскрытым". В общем если у вас такая же проблема, то воспользуйтесь функцией menu_tree и замените вышеописанный кусок кода на:
<?php
print render(menu_tree('main-menu'));
?>
где main-menu - это название меню.
Конечно же в настройках меню должны стоять галочки "Показывать раскрытым".
UPD: если сайт на хостинге выдает ошибки, ссылаясь на строчку с выводом print render(menu_tree('main-menu')); , то уберите menu_tree('main-menu') в переменную, а ее уже рендерьте:
<?php
$var = menu_tree('main-menu');
print render($var);
?>