質問: 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); } } } ただし、機能しません。つまり、themes/node--super.tpl.phpファイルは使用されません。テーマフォルダにコピーした場合にのみ使用されます。
回答: 以下は、「custom_module」の「template」フォルダに格納されているビューテンプレートを宣言するためのスニペットです。/** * implements hook_theme_registry_alter(). */ function custom_module_theme_registry_alter(&$theme_registry) { $extension = '.tpl.php'; $module_path = drupal_get_path('module', 'custom_module'); $files = file_scan_directory($module_path . '/templates', '/' . preg_quote($extension) . '$/'); foreach ($files as $file) { $template = drupal_basename($file->filename, $extension); $theme = str_replace('-', '_', $template); list($base_theme, $specific) = explode('__', $theme, 2); // don't override base theme. if (!empty($specific) && isset($theme_registry[$base_theme])) { $theme_info = array( 'template' => $template, 'path' => drupal_dirname($file->uri), 'variables' => $theme_registry[$base_theme]['variables'], 'base hook' => $base_theme, // other available value: theme_engine. 'type' => 'module', 'theme path' => $module_path, ); $theme_registry[$theme] = $theme_info; } } } それが誰かを助けることを願っています。