it-swarm-ko.tech

사용자 정의 테마 기능이 호출되지 않습니까?

맞춤형 필드 유형을 만들기 위해 Drupal 7 모듈을 작성 중입니다. 필요한 모든 후크를 구현했습니다. 내 hook_field_formatter_view() 함수는 다음과 같습니다.

function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();

  switch ($display['type']) {
    case 'default':
      foreach ($items as $delta => $item) {
                $element[$delta] = array(
                  '#theme' => 'test',
                  '#item' => $item,
                );
      }
      break;
  }

  return $element;  
}

그런 다음 아래 theme() 함수를 정의했습니다.

function theme_test($variables) {
    return '<h1>Hello World</h1>';
}

그러나 페이지를 볼 때 아무것도 출력되지 않습니다. 최근 로그 항목을 보면 다음 메시지가 표시됩니다.

Theme key 'test' not found.

MYMODULE_field_formatter_view 렌더 배열 '#theme'값을 'item_list'와 같은 내장 테마 함수로 변경하면 작동합니다. 그러나 어떤 이유로 내 사용자 정의 테마 기능이 선택되지 않습니다.

캐시를 지우고 테마 레지스트리를 수백 번 재구성했습니다.

8
Camsoft

hook_theme()에서 테마 후크를 정의하지 않았을 수 있습니다.

개발 핸드북의 테마 레이어 사용 섹션에 이에 대한 자세한 설명이 있습니다.

12
Damien Tournoud

hook_theme 그런 다음 캐시를 지우십시오.

 function MYMODULE_theme() {
   return array(
     'test' => array (
       'render element' => 'element',
     ),
   );
 }
10
googletorp

내 맞춤 테마 기능이 등록되어 있어도 내 템플릿에서 호출되지 않는 것과 같은 문제에 직면했습니다. 다른 테마로 전환했을 때 효과가있었습니다.

내 솔루션은 바보 같은 실수를하고 이미 'something'이라는 모듈을 가지고 있기 때문에 테마의 이름을 'something_theme'으로 바 꾸었습니다.

모듈과 테마는 같은 이름을 가져서는 안됩니다 충돌로 이어져 예기치 않은 동작과 후크 재정의가 발생하기 때문입니다.

2
bpile