Drupal6: In theme_preprocess_page (& amp; $ vars), da dove provengono $ vars? (Come manipolare il pangrattato)
-
05-07-2019 - |
Domanda
Voglio rimuovere il pangrattato quando è solo una voce (" Home "). Sono nella funzione theme_preprocess_page (& amp; $ vars)
del mio tema. $ vars ['breadcrumb'] è disponibile, ma è solo HTML. Questo è un po 'goffo con cui lavorare. Preferirei prenderlo come una serie di elementi nell'elenco breadcrumb e fare qualcosa del genere:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
Da dove viene $ vars
? Come posso sovrascrivere il codice creando in origine?
Soluzione
Un array $ vars viene passato tra tutte le funzioni di preelaborazione. Nel caso delle funzioni _preprocess_page, la maggior parte dei valori in $ vars sono creati in template_preprocess_page (vedi http://api.drupal.org/api/function/template_preprocess_page/6 ). In quella funzione, vedrai:
$variables['breadcrumb'] = theme('breadcrumb', drupal_get_breadcrumb());
Qui, drupal_get_breacrumb restituisce una matrice di elementi breadcrumb, che è quindi a tema con la funzione theme_breadcrumb () (o la sua sostituzione).
Il modo più semplice per ottenere ciò che vuoi è sovrascrivere la funzione theme_breadcrumb. Per fare ciò, prendi la funzione theme_breadcrumb originale ( http://api.drupal.org / api / function / theme_breadcrumb / 6 ), copiarlo sul template.php, sostituire "theme" nel nome della funzione con il nome del tema e modificare il codice in questo modo:
function THEMENAME_breadcrumb($breadcrumb) {
if (count($breadcrumb) > 1) { // This was: if (!empty($breadcrumb))
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
Per una migliore comprensione delle sostituzioni dei temi di Drupal e delle funzioni di preelaborazione, vedere Informazioni sulla sostituzione dell'output tematico e < a href = "http://drupal.org/node/223430" rel = "nofollow noreferrer"> Impostazione delle variabili da utilizzare in un modello (funzioni di preelaborazione) .