Drupal6:Em theme_preprocess_page(&$vars), de onde vem $vars?(Como manipular a farinha de rosca)
-
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?
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).