Изменение вывода в переменные $tabs, $tabs2

Главные вкладки

Комментарии

Аватар пользователя Ромка Ромка 24 марта 2011 в 11:30

Вот так это делается в теме zen:

/**
 * Duplicate of theme_menu_local_tasks() but adds clearfix to tabs.
 */

function zen_menu_local_tasks() {
  $output = '';

  // CTools requires a different set of local task functions.
  if (module_exists('ctools')) {
    ctools_include('menu');
    $primary = ctools_menu_primary_local_tasks();
    $secondary = ctools_menu_secondary_local_tasks();
  }
  else {
    $primary = menu_primary_local_tasks();
    $secondary = menu_secondary_local_tasks();
  }

  if ($primary) {
    $output .= '<ul class="tabs primary clearfix">' . $primary . '</ul>';
  }
  if ($secondary) {
    $output .= '<ul class="tabs secondary clearfix">' . $secondary . '</ul>';
  }

  return $output;
}

Разместить функцию надо в своем template.php, zen заменить на название своей темы.

Аватар пользователя Bochagov Bochagov 24 марта 2011 в 12:29

О! спасибо! то, что нужно.
А и искал функии по слову 'tabs'...

Нашёл что массив $primary заполняется функцией

function theme_menu_local_task($link, $active = FALSE) {
  return '<li '. ($active ? 'class="active" ' : '') .'>'. $link ."</li>\n";
}

Но вот не пойму где формируется переменная $link. Мне нужно до неё добраться,
чтобы задать нужный мне класс.

Вообще, есть алгоритм поиска функций темизации? Вот как с переменной $tabs, например.
Как искать функции, их формирующие? или это познаётся с опытом?

Аватар пользователя Ромка Ромка 24 марта 2011 в 13:15

Bochagov wrote:

Но вот не пойму где формируется переменная $link. Мне нужно до неё добраться,
чтобы задать нужный мне класс.

Тут: http://api.drupal.ru/api/function/theme_links/6

Bochagov wrote:

Вообще, есть алгоритм поиска функций темизации? Вот как с переменной $tabs, например.
Как искать функции, их формирующие? или это познаётся с опытом?

Ну да, смотришь модуль, который создает тот или иной объект на странице и ищешь в нем реализацию hook_theme, в нем перечислены все функции темизации.

Аватар пользователя mahmud mahmud 11 июля 2012 в 22:20

Ромка wrote:
Bochagov wrote:

Но вот не пойму где формируется переменная $link. Мне нужно до неё добраться,
чтобы задать нужный мне класс.

Тут: http://api.drupal.ru/api/function/theme_links/6

Скорее, все-таки не тут, а тут http://api.drupal.ru/api/function/menu_local_tasks/6 и
тут http://api.drupal.ru/api/function/theme_menu_item_link/6

Тоже озадачился подобным вопросом.
В ходе исследования, понял, что надо править THEME_menu_local_task, как именно - нашел тут
http://drupal.org/node/1002038#comment-3844498

В результате вычленяется название каждой вкладки и вставляется уже хоть в класс, хоть в ИД.
Пришлось правда применять функцию транслитерации - у меня вкладки на русском.

Вопрос, кстати. Это ничего, что я функцию транслитерации поместил прямо в template.php и сама по себе она не нагружает ли каким-то хитрым способом систему?