воскресенье, 6 декабря, 2015 - 07:45

У меня была задача поставить логотип в меню.
В Drupal есть хуки на все случаи жизни.

Вот собственно замечательные хук для меню "template_menu_link__MENU_NAME".

Где "template" название нашей темы, а "MENU_NAME" машинное имя меню.

Код добавляющий логотип в меню после страницы "О нас".

/**
 * Implements template_menu_link__MENU_NAME().
 */
function TEMPLATE_menu_link__main_menu($variables) {
  $element    = $variables['element'];
  $sub_menu   = '';

  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }

  $link = l($element['#title'], $element['#href'], $element['#localized_options']);

  $logo = '';
  // page about
  if ($element['#href']=='node/NID') {
    $src = '';
    $theme_settings = variable_get('TEMPLATE_theme_settings', '');
    if (isset($theme_settings['logo_path']) && $theme_settings['logo_path']) {
      $src = $theme_settings['logo_path'];
    }

    if ($src) {
      $logo = format_string('<img src="@src" alt="Главная">', array(
        '@src' => file_create_url($src)
      ));

      $logo = format_string('<li class="logo">!link</li>', array(
        '!link' => l($logo, '<front>', array('html' => TRUE))
      ));
    }
  }

  return '<li' . drupal_attributes($element['#attributes']) . '>' . $link . $sub_menu . "</li>\n" . $logo;
}
Теги: 

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.