Drupal6: В theme_preprocess_page (& amp; $ vars), откуда берется $ vars? (Как манипулировать хлебными крошками)

StackOverflow https://stackoverflow.com/questions/1403048

  •  05-07-2019
  •  | 
  •  

Вопрос

Я хочу удалить хлебную крошку, когда это всего лишь одна запись (" Главная "). Я нахожусь в функции моей темы theme_preprocess_page (& amp; $ vars) . $ vars ['breadcrumb'] доступен, но это всего лишь HTML. С этим немного неуклюже работать. Я бы предпочел получить его в виде массива элементов в списке хлебобулочных изделий и сделать что-то вроде этого:

if (count($breadcrumb) == 1) {
    unset($breadcrumb);
}

Откуда берется $ vars ? Как я могу переопределить код, создавший его изначально?

Это было полезно?

Решение

Массив $ vars передается между всеми функциями предварительной обработки. В случае функций _preprocess_page большинство значений в $ vars создаются в template_preprocess_page (см. http://api.drupal.org/api/function/template_preprocess_page/6 ). В этой функции вы увидите:

  $variables['breadcrumb']        = theme('breadcrumb', drupal_get_breadcrumb());

Здесь drupal_get_breacrumb возвращает массив элементов breadcrumb, который затем тематически обрабатывается функцией theme_breadcrumb () (или ее переопределением).

Самый простой способ получить то, что вы хотите, это переопределить функцию theme_breadcrumb. Для этого вы берете оригинальную функцию theme_breadcrumb ( http://api.drupal.org / api / function / theme_breadcrumb / 6 ), скопируйте его в файл template.php, замените «theme» в имени функции на имя вашей темы и измените код так, чтобы он выглядел так:

function THEMENAME_breadcrumb($breadcrumb) {
  if (count($breadcrumb) > 1) { // This was:  if (!empty($breadcrumb))
    return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
  }
}

Для лучшего понимания переопределений тем Drupal и функций предварительной обработки см. О переопределении выводимого вывода и < a href = "http://drupal.org/node/223430" rel = "nofollow noreferrer"> Настройка переменных для использования в шаблоне (функции предварительной обработки) .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top