Темизация Drupal 7

Опубликовано: 01.09.2018

видео Темизация Drupal 7

Темизация Drupal 7: функции hook theme

Часто бывают ситуация в жизни , когда необходимо стилизовать меню под уже готовую верстку, то самый случай когда верстали под конкретный проект а получилось как всегда.


Темизация Drupal Урок 2 Верстаем главную страницу 1

Для примера рассмотрим следующую ситуацию, допустим у нас есть меню со следующей версткой:

<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сив подменю для текущего пункта меню.

Думаю в остальное понятно без комментариев.

rss