Drupal6:Em theme_preprocess_page(&$vars), de onde vem $vars?(Como manipular a farinha de rosca)

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Quero remover a localização atual quando houver apenas uma entrada ("Home").Estou no meu tema theme_preprocess_page(&$vars) função.$vars['breadcrumb'] está disponível, mas é apenas HTML.Isso é um pouco desajeitado de se trabalhar.Prefiro obtê-lo como uma série de itens na lista de localização atual e fazer algo assim:

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

Onde $vars vem de onde?Como posso substituir o código que o criou originalmente?

Foi útil?

Solução

Um array $vars é passado entre todas as funções de pré-processamento.No caso das funções _preprocess_page, a maioria dos valores em $vars são criados em template_preprocess_page (veja http://api.drupal.org/api/function/template_preprocess_page/6).Nessa função, você verá:

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

Aqui, drupal_get_breacrumb retorna uma matriz de elementos breadcrumb, que é então tematizada pela função theme_breadcrumb() (ou sua substituição).

A maneira mais fácil de conseguir o que deseja é substituir a função theme_breadcrumb.Para fazer isso, você usa a função theme_breadcrumb original (http://api.drupal.org/api/function/theme_breadcrumb/6), copie-o para o seu template.php, substitua 'theme' no nome da função pelo nome do seu tema e altere o código para que fique assim:

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

Para uma melhor compreensão das substituições de tema e funções de pré-processamento do Drupal, consulte Sobre como substituir a saída tematável e Configurando variáveis ​​para uso em um modelo (funções de pré-processamento).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top