Here is my snippet to declare views templates stored in the "template" folder of my "custom_module": /** * 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; } } } You should be easily able to fork it override an existing theme instead of adding a new one. Hope it helps someone.