Drupal6: en theme_preprocess_page (& amp; $ vars), ¿de dónde proviene $ vars? (Como manipular la miga de pan)
-
05-07-2019 - |
Pregunta
Quiero eliminar la ruta de navegación cuando solo sea una entrada (" Inicio "). Estoy en la función theme_preprocess_page (& amp; $ vars)
. $ vars ['breadcrumb'] está disponible, pero solo es HTML. Esto es un poco torpe para trabajar. Prefiero obtenerlo como un conjunto de elementos en la lista de ruta de navegación, y hacer algo como esto:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
¿De dónde viene $ vars
? ¿Cómo puedo anular el código que lo creó originalmente?
Solución
Se pasa una matriz $ vars entre todas las funciones de preproceso. En el caso de las funciones _preprocess_page, la mayoría de los valores en $ vars se crean en template_preprocess_page (consulte http://api.drupal.org/api/function/template_preprocess_page/6 ). En esa función, verás:
$variables['breadcrumb'] = theme('breadcrumb', drupal_get_breadcrumb());
Aquí, drupal_get_breacrumb devuelve una matriz de elementos de ruta de navegación, que luego tiene como tema la función theme_breadcrumb () (o su anulación).
La forma más fácil de obtener lo que desea es anular la función theme_breadcrumb. Para hacer eso, toma la función original theme_breadcrumb ( http://api.drupal.org / api / function / theme_breadcrumb / 6 ), cópielo en su template.php, reemplace 'tema' en el nombre de la función con el nombre de su tema y modifique el código para que se vea así:
function THEMENAME_breadcrumb($breadcrumb) {
if (count($breadcrumb) > 1) { // This was: if (!empty($breadcrumb))
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
Para una mejor comprensión de las funciones de reemplazo y preprocesamiento de Drupal, consulte Acerca de anular la salida temática y < a href = "http://drupal.org/node/223430" rel = "nofollow noreferrer"> Configuración de variables para usar en una plantilla (funciones de preproceso) .