Tôi muốn cung cấp triển khai mẫu trong mô-đun của mình và cho phép các chủ đề ghi đè lên nó. Về cơ bản, tôi thêm một đề xuất bằng mã đơn giản này:
function attach_preprocess_node(&$vars) {
$vars['theme_hook_suggestions'][] = 'node__test';
}
(Tôi không muốn sử dụng hook_theme để thêm một chủ đề mới bởi vì tôi muốn sử dụng lại chức năng nút preprocess. Tên chủ đề là vụng về nhưng tôi không muốn viết node_ đính kèm _% để tránh nhầm lẫn với loại nút.)
Sau đó, tôi sử dụng hook_theme_registry_alter () để thêm đường dẫn mô-đun:
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);
}
}
}
Tuy nhiên, nó không hoạt động. Điều đó có nghĩa là: các chủ đề / nút tệp - super.tpl.php không được sử dụng. Nó chỉ được sử dụng nếu tôi sao chép nó vào thư mục theme.