Часто бывают ситуация в жизни , когда необходимо стилизовать меню под уже готовую верстку, то самый случай когда верстали под конкретный проект а получилось как всегда.
Для примера рассмотрим следующую ситуацию, допустим у нас есть меню со следующей версткой:
<nav class="menu"> <div> <ul> <li class="active"><a href="">О САЙТЕ</a></li> <li><a href="">НОВОСТИ</a></li> <li><a href="">FAQ</a></li> <li><a href="">КОНТАКТЫ</a></li> </ul> </div> </nav>
Решение простое, выводить меню с помощью функции темизации — menu_tree(), которая возвращает готовый к рендерингу массив с т меню которое мы передаем при вызове функции.
Этот код нужно вписать в page.tpl.php там, где должно отображаться наше меню( к примеру main-menu)
<?php if ($main_menu): ?> <?php print render(menu_tree('main-menu')); ?> <?php endif; ?>
осталось переопределить функции темизации в файле template.php,
function THEMNAME_menu_tree__main_menu($variables) { return '<nav class="menu"><div> <ul>' . $variables['tree'] . '</ul></div></nav>'; } function THEMNAME_menu_link__main_menu(array $variables) { $element = $variables['element']; $sub_menu = ''; if ($element['#below']) { $sub_menu = drupal_render($element['#below']); $sub_menu = '<div class="submenu">' . $sub_menu . '</div>'; } $output = l($element['#title'], $element['#href']); return '<li>' . $output . $sub_menu . "</li>\n"; }
Обратите внимание — в функции THEMNAME_menu_link__main_menu не случайно прописан вывод $element[‘bellow’] — этот элемент хранит в себе маcсив подменю для текущего пункта меню.
Думаю в остальное понятно без комментариев.
Спасибо, Вы мне очень помогли
Не за что , заходите к нам ещё