Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции _menu_load_objects() (строка 579 в файле /home/opgnylyd/public_html/includes/menu.inc).

Добавление разделителя, сепаратора (delimeter) в меню

21 Окт 2016
Раздел: 

Описание

Добавление разделителя для пунктов меню для темы Друпал 7, с помощью функции в файле template.php. Хороший способ если не подходит решение с псевдоклассами :before, :after в CSS.

Решение

Пепеопределяем функцию theme_menu_link(array $variables) в файле template.php. ВАША_ТЕМА - название вашей темы, и - $delimiter =  '<span class="menu-delimiter"></span>' - это разделитель, который добавляется после каждого пункта главного меню.

  1. function ВАША_ТЕМА_menu_link(array $variables) {
  2.         $delimiter = '';
  3.         if (strpos($variables['element']['#theme'], 'main_menu') !== FALSE ) {
  4.                 if (!in_array('last', $variables['element']['#attributes']['class'])) {
  5.                         $delimiter = '<span class="menu-delimiter"></span>';
  6.                 }
  7.         }
  8.         $element = $variables['element'];
  9.         $sub_menu = '';
  10.         if ($element['#below']) {
  11.                 $sub_menu = drupal_render($element['#below']);
  12.         }
  13.         $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  14.         return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n" . $delimiter;
  15. }

Комментарии