Сышышь ты, выходи сюда,
поговорим !

Главная Новости

۞ → Читать Урок Темизация меню в 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 предоставляет возможность темизировать каждое меню отдельно:

rss