2009-09-10 2 views
2

빵 부스러기를 단지 하나의 항목 ("집") 일 때 제거하고 싶습니다. 내 테마는 theme_preprocess_page(&$vars)입니다. $ vars [ 'breadcrumb']는 사용할 수 있지만 HTML 만 사용합니다. 이건 쓸데없는 것 같아. 차라리 이동 경로 목록에있는 항목의 배열로 그것을 얻을,이 같은 것을 할 거라고 :

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

$vars이 오는가를? 원래 코드를 작성하는 코드를 어떻게 대체 할 수 있습니까?

답변

1

$ vars 배열은 모든 사전 처리 함수 사이에서 전달됩니다. _preprocess_page 함수의 경우, $ vars의 대부분의 값은 template_preprocess_page에 생성됩니다 (http://api.drupal.org/api/function/template_preprocess_page/6 참조). 이 함수에서는 볼 수 있습니다 : 여기

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

는 drupal_get_breacrumb 다음 theme_breadcrumb() 함수 (또는 오버라이드)에 의해 테마되어 이동 경로 요소의 배열을 반환합니다.

원하는 것을 얻는 가장 쉬운 방법은 theme_breadcrumb 기능을 재정의하는 것입니다. 이를 수행하려면 원래 theme_breadcrumb 함수 (http://api.drupal.org/api/function/theme_breadcrumb/6)를 가져 와서 template.php로 복사하고 함수 이름의 'theme'을 테마 이름으로 바꾸고 다음과 같이 코드를 변경하십시오.

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

Drupal 테마 재정의 및 사전 처리 기능을 더 잘 이해하려면 About overriding themable outputSetting up variables for use in a template (preprocess functions)을 참조하십시오.

관련 문제