it-swarm-ko.tech

Drupal 7의 사용자 정의 hook_theme ()에 대한 테마 대체

나는 자신의 템플릿을 정의하는 몇 가지 테마 함수를 정의하는 자체 hook_theme()을 정의하는 사용자 정의 D7 모듈이 있습니다.

function foo_theme($existing, $type, $theme, $path) {
    $items = array(
        'post_foot' => array(
            'template' => 'templates/post_foot',
            'variables' => array('node' => (object)array())
        )
    );
    return $items;
}

보시다시피,이 특정 경우 sites/all/modules/custom/foo/templates/post_foot.tpl.php에서 foo 모듈에있는 자체 템플릿을 정의합니다.

내 테마에서 내 자신의 post_foot.tpl.php를 정의하고 foo의 tpl을 대체로 사용하고 싶습니다.

이것이 자동적으로 발생합니까? 재정의를 포함하도록 hook_theme()을 확장해야합니까?

2
electblake

이것은 자동으로 발생합니다. 대부분의 핵심 모듈은 테마를 재정의하는 것에 대해 두 번 생각하지 않을 테마 후크를 정의합니다. node_theme를 살펴보십시오 (예 : http://api.drupal.org/api/drupal/modules--node--node.module/function/node_theme/7 ).

Devel themer 모듈은 그러한 것들로 당신을 도울 것입니다. D7에는 약간의 작업이 필요하지만 도움이 될 것입니다.

2
Jeremy French

하이픈이 밑줄로 바뀐 후 테마 후크의 이름이 템플릿 파일과 다른 경우가 아니면 자동으로 발생합니다. 이 경우 자동 검색이 실패합니다.

자동 검색은 모듈 템플릿 이름이 아닌 모듈 정의 테마 후크의 이름을 기반으로합니다. 이것은 나를위한 문제였다.

모듈에서 :

테마 훅 : foo_theme_hook

템플릿 : theme-hook.tpl.php

테마로

템플릿 : theme-hook.tpl.php

= 실패

위의 예에서 수정하려면 테마 후크의 이름을 "foo_theme_hook"대신 "theme_hook"으로 바꾸거나 재정의 템플릿 파일의 이름을 "foo-theme-hook.tpl.php"로 바꾸십시오.

2
meriial