drupal6 : teme_preprocess_page (& $ vars)에서 $ vars는 어디에서 왔습니까? (빵 부스러기를 조작하는 방법)

StackOverflow https://stackoverflow.com/questions/1403048

  •  05-07-2019
  •  | 
  •  

문제

하나의 항목 ( "홈") 일 때 빵 부스러기를 제거하고 싶습니다. 나는 내 테마에있다 theme_preprocess_page(&$vars) 기능. $ vars [ 'breadcrumb']를 사용할 수 있지만 HTML입니다. 이것은 서투른 일입니다. 차라리 빵 부스러기 목록에서 다양한 항목으로 가져 가서 다음과 같은 일을 할 것입니다.

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

어디에 $vars 나왔어? 원래 코드를 생성하는 코드를 어떻게 무시할 수 있습니까?

도움이 되었습니까?

해결책

모든 전처리 함수 사이에 $ 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은 빵 부스러기 요소의 배열을 반환하며, 이는 테마_breadcrumb () 함수 (또는 그 재정의)에 의해 테마입니다.

원하는 것을 얻는 가장 쉬운 방법은 Theme_breadCrumb 함수를 무시하는 것입니다. 그렇게하려면 원래 테마 _breadcrumb 함수를 취합니다 (http://api.drupal.org/api/function/theme_breadcrumb/6), template.php로 복사하고, 기능 이름의 '테마'를 테마 이름으로 바꾸고 코드를 변경하여 다음과 같이 보입니다.

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

Drupal 테마를 더 잘 이해하려면 재정의 및 전처리 기능을 보려면 참조하십시오. 이들을 우선적으로 출력하는 것에 대해 그리고 템플릿에서 사용할 변수 설정 (전처리 함수).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top