В случае необходимости темизировать сайт на Drupal 7 на котором установлена тема которая не поддерживает опцию второго уровня для «Главное меню», и установка опции «Показать раскрытым» (Show as expanded) для родительских элементов в разделе настройки меню не помогает.
Есть два способа решения этой задачи:
- Установка стороннего модуля и при его помощи настроить вывод второго уровня меню (например модуль —Superfish, который позволяет настраивать выпадающие меню с jQuery эффектами.)
- Добавление нового региона , в который нужно будет поместить меню.
Но если вы не стороник установки сторонних модулей для реализатции только одной не сложной задачи, а использование отдельного региона только для одного-единственного меню считаете не приемлемым, то в этом случае есть и третий способ о котором мы и поговорим подробнее в этой статье.
Первым делом проверьте в page.tpl.php доступна ли переменная $main_menu.
Затем нам необходимо получить имя меню, которое выбрано главным. Для этого нужно воспользоваться функцией variable_get:
$main_menu = variable_get('menu_main_links_source', 'main-menu');
Далее нам понадобиться получить массив пунктов меню при помощи функции menu_tree_all_data. Обратите внимание, что в данном случае будут отображаться ВСЕ подпункты главного меню вне зависимости от текущей страницы и отмеченной галочки «Show as expanded». В случае если Вам необходимо, чтобы поведение главного меню учитывала эти параметры, то Вам следует использовать функцию menu_tree_page_data.
$main_menu_expanded = menu_tree_all_data($main_menu);
function zen_preprocess_page(&$variables) {
$main_menu = variable_get('menu_main_links_source', 'main-menu');
$main_menu_expanded = menu_tree_all_data($main_menu);
$variables['main_menu_expanded'] = menu_tree_output($main_menu_expanded);
}