1

How can I use a custom module to override views-view-table.tpl.php? I understand how to do it for a theme, but I want to provide the template using a custom module. I've already created my replacement table theme file. I've put it in a folder called "templates" inside my custom module. Now I just need to understand what hook(s) I should use to tell views to check my module for replacement templates.

2 Answers 2

2

Add a module path to the Drupal 7 theme registry by implementing hook_theme_registry_alter().

Here's an example - replace the usual with your own data :)


/**
 * Implements hook_theme_registry_alter().
 */

function MYMODULE_theme_registry_alter(&$theme_registry) {

  // Get module path
  $path = drupal_get_path('module', MYMODULE);

  // Find all .tpl.php files in this module's folder recursively.
  $template_files = drupal_find_theme_templates($theme_registry, '.tpl.php', $path);

  // Itterate through all found template file objects.
  foreach ($template_files as $key => $template_file) {
    // If the template has not already been overridden by a theme.
    if (!preg_match('#/themes/#', $theme_registry[$key]['theme path'])) {
      // Alter the theme path and template elements.
      $theme_registry[$key]['theme path'] = $path;
      $theme_registry[$key] = array_merge($theme_registry[$key], $template_file);
    }
  }
}
0

Try hook_views_api().

function YOUR_MODULE_views_api() {
  return array(
    'api' => 3,
    // Place your exported views here if you have any.
    'path' => drupal_get_path('module', 'YOUR_MODULE') . '/includes/views',
    // Place your template files here.
    'template path' => drupal_get_path('module', 'YOUR_MODULE') . '/templates',
  );
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.