۞ → Читать Урок Темизация меню в Drupal 7. Шаблон menu_tree(). Шаблон menu_link()..
Опубликовано: 13.11.2017
Для темизации меню Drupal 7 предоставлет два шаблона:
menu_tree - обертка для всего меню. menu_link - вывод отдельного пункта меню и дочерних элементов.Шаблон menu_link.
Шаблон menu_link отвечает за вывод одного пункта меню, включая под меню. Базовой реализацией шаблона является функция theme_menu_link() в файле ./includes/menu.inc и выглядит следующим образом:
/** * Возвращает HTML для ссылки меню включая подменю. * * @param $variables * Ассоциативный массив содержащий: * - element: Структурированный массив дданных для ссылки меню. * * @ingroup themeable */ function theme_menu_link(array $variables) { $element = $variables['element']; $sub_menu = ''; if ($element['#below']) { $sub_menu = drupal_render($element['#below']); } $output = l($element['#title'], $element['#href'], $element['#localized_options']); return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; }Для изменения шаблона menu_link необходимо переопределить шаблон menu_link и создать новую реализацию шаблона menu_link.
Шаблон menu_tree.
Шаблон menu_tree отвечает за вывод обертки для всего меню, или под меню. Базовой реализацией шаблона является функция theme_menu_tree() в файле ./includes/menu.inc и выглядит следующим образом:
/** * Вовращает HTML для оборачивания поддерева меню. * * @param $variables * Ассоциативный массив содержит: * - tree: HTML-строка содержащая элементы дерева меню. * * @see template_preprocess_menu_tree() * @ingroup themeable */ function theme_menu_tree($variables) { return '<ul class="menu">' . $variables['tree'] . '</ul>'; }Для изменения шаблона menu_tree необходимо переопределить шаблон menu_tree и создать новую реализацию шаблона menu_tree.
Расширение шаблона menu_link и шаблона menu_tree.
Для более гибкой темизации, на уровне шаблонов, Drupal 7 предоставляет возможность темизировать каждое меню отдельно: