2009-12-15 4 views
0

저는 Ubercart를 사용 중이며 uc_cart_checkout_pane.inc에있는 다음과 같은 테마 함수 theme_address_pane()을 덮어 쓰려고합니다. 그래서 template.php에 다음 함수를 썼다 :Drupal 테마 함수가 무시되고 있지 않습니다.

function mytheme_address_pane($form) { 
    return "asdf"; 
} 

그러나, 그것은 "asdf을"아무것도를 대체하지 않습니다. 나는 무엇을 잘못 할 수 있 었는가?

편집 : devel 모듈은 내 우선 적용된 것이 아니라 theme_address_pane이라는 함수를 호출합니다.

+2

캐시를 지우셨습니까? 테마 기능은 테마 레지스트리가 빌드 될 때만 발견되며 캐시가 지워진 후에 발생합니다. – jhedstrom

답변

2

테마 시스템을 다룰 때마다 캐시를 ​​지워야 효과를 볼 수 있습니다. 캐시 전체가 아니라 테마 레지스트리입니다. 여기서 drupal은 사용할 테마 함수와 템플릿에 대한 정보를 저장합니다. 따라서 사용할 함수 나 템플릿을 변경할 때마다 캐시를 ​​지워야합니다.

함수 또는 템플릿을 직접 변경하는 경우 캐시를 지울 필요가 없습니다. Drupal은 함수 나 템플릿 자체를 캐시하지 않지만 위치/이름 만 캐시합니다. 드루팔 (Drupal)이 등록한 후에는 테마 기능을 행복하게 변경할 수 있습니다.

2

당신은 (PHP는 태그 내부) 당신의 template.php 파일의 맨 위에 다음 넣어 경우

drupal_flush_all_caches();

그것은 매번 페이지가로드 캐시를 삭제합니다. 이렇게하면 캐시를 수동으로 플러시 할 필요가 없습니다. 그러나 테마가 게시되기 전에 반드시 제거해야합니다. 그렇지 않으면 모든 페이지로드시 큰 성능을 보게됩니다!

관련 문제