2009-09-10 11 views
2

Je veux enlever le fil d'Ariane quand c'est juste une entrée ("Maison"). Je suis dans la fonction theme_preprocess_page(&$vars) de mon thème. $ vars ['breadcrumb'] est disponible, mais c'est juste du HTML. C'est un peu maladroit de travailler avec. Je préfère l'obtenir comme un tableau d'éléments dans la liste fil d'Ariane, et faire quelque chose comme ceci:

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

$vars vient? Comment puis-je remplacer le code qui le crée à l'origine?

Répondre

1

Un tableau $ vars est transmis entre toutes les fonctions de prétraitement. Dans le cas des fonctions _preprocess_page, la plupart des valeurs de $ vars sont créées dans template_preprocess_page (voir http://api.drupal.org/api/function/template_preprocess_page/6). Dans cette fonction, vous verrez:

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

Ici, drupal_get_breacrumb retourne un tableau d'éléments panés, qui est alors le thème par la fonction theme_breadcrumb() (ou son remplacement).

La manière la plus simple d'obtenir ce que vous voulez est de surcharger la fonction theme_breadcrumb. Pour ce faire, vous prenez la fonction theme_breadcrumb d'origine (http://api.drupal.org/api/function/theme_breadcrumb/6), copiez-la dans votre template.php, remplacez 'theme' dans le nom de la fonction par le nom de votre thème et modifiez le code:

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

Pour une meilleure compréhension des remplacements de thèmes Drupal et des fonctions de prétraitement, voir About overriding themable output et Setting up variables for use in a template (preprocess functions).