Заменяем локальные задачи (табы) контекстными ссылками

Странная штука — контекстные ссылки у нод есть только при просмотре тизеров, при просмотре полных версий уже появляются табы (локальные задачи).

Чтобы избавиться от табов и вывести вместо них контекстные ссылки нужно:

1. Добавить в template.php:

function [THEMENAME]_menu_local_task($variables) {
  $link = $variables['element']['#link'];
  if ($link['path'] == 'node/%/view') return FALSE;
  $link['localized_options']['html'] = TRUE;
  return '<li>' . l($link['title'], $link['href'], $link['localized_options']) . '</li>';
}
 
function [THEMENAME]_menu_local_tasks($variables) {
  $output = '';
  $has_access = user_access('access contextual links');
 
  if (!empty($variables['primary'])) {
    $variables['primary']['#prefix'] = $has_access ? '<div class="contextual-links-wrapper"><ul class="contextual-links">' : '<ul class="tabs primary">';
    $variables['primary']['#suffix'] = $has_access ? '</ul></div>' : '</ul>';
    $output .= drupal_render($variables['primary']);
  }
  if (!empty($variables['secondary'])) {
    $variables['secondary']['#prefix'] = '<ul class="tabs secondary">';
    $variables['secondary']['#suffix'] = '</ul>';
    $output .= drupal_render($variables['secondary']);
  }
 
  return $output;
}

2. В page.tpl.php, элементу, который оборачивает рендер $page['content'] и $tabs, добавить новый класс — contextual-links-region (например в Bartik это <div id="content" class="column">).

3. Сбросить кэш.

Написанное актуально для
Drupal 7.x
Теги:
template.php, работа с меню
Добавлено: 29 Июля 2018 20:22:41 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...