내 모듈에 템플릿 구현을 제공하고 테마가 그것을 재정의하도록 허용하고 싶습니다. 기본적 으로이 단순화 된 코드로 제안을 추가합니다.
function attach_preprocess_node(&$vars) {
$vars['theme_hook_suggestions'][] = 'node__test';
}
(전처리 노드 함수를 재사용하고 싶기 때문에 hook_theme을 사용하여 새 테마를 추가하고 싶지 않습니다. 테마 이름이 어색하지만 노드 유형과의 혼동을 피하기 위해 node_ attach _ %를 작성하고 싶지 않습니다 .)
그런 다음 hook_theme_registry_alter ()를 사용하여 모듈 경로를 추가하십시오.
function attach_theme_registry_alter(&$theme_registry) {
$path = drupal_get_path('module', 'attach') . '/themes';
$theme_registry_copy = $theme_registry;
_theme_process_registry($theme_registry_copy, 'phptemplate', 'theme_engine', 'node', drupal_get_path('module', 'node'));
$theme_registry += array_diff_key($theme_registry_copy, $theme_registry);
if (!isset($theme_registry['node']['theme paths'])) {
$theme_registry['node']['theme paths'] = array();
}
if (!isset($theme_registry['node']['theme paths'])) {
$first_element = array_shift($theme_registry['node']['theme paths']);
if ($first_element) {
array_unshift($theme_registry['node']['theme paths'], $first_element, $path);
}
else {
array_unshift($theme_registry['node']['theme paths'], $path);
}
}
}
그러나 작동하지 않습니다. 즉, 테마 / 노드 --super.tpl.php 파일이 사용되지 않습니다. 테마 폴더에 복사 한 경우에만 사용됩니다.