如何使用模块而不是主题存储View模板


13

我创建了几个视图模板,这些模板当前存储在我的活动主题目录中。最好将这些模板存储在我的模块目录中。

我的问题是,如何将这些主题文件(例如,views-view-field.tpl.php)带入我的模块目录,并让Views看到它们?

查看“视图”模块,可以看到默认模板存储在视图/主题中,但是我看不到它是如何实现的。

Answers:


29

这也花了我一段时间才能弄清楚。以下代码应放在您的.module文件中(该代码假定您的模块称为“ NAME”)

/**
* Implements hook_views_api().
*
* Enabling using templates inside module
*/
function NAME_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'NAME'),
    'template path' => drupal_get_path('module', 'NAME'),
  );
}

这将告诉Views在模块的根目录中查找。我个人很喜欢在模块中添加子目录来保存模板文件。为此,将目录名称附加到模板路径的末尾,例如:

'template path' => drupal_get_path('module', 'NAME') . '/templates',

将它们添加到子目录是一个绝妙的主意,它可以清理所有内容,并且效果很好。以后的搜索者请确保清除您的Drupal缓存。谢谢@Reekan Mantell
Citricguy 2012年

谢谢!几个月来,我一直在修改我的管理主题,以超越七个视图字段。现在,我不必。
JM01

我必须说,即使已经实现了此代码,您仍然可以在主题中添加TPL。谢谢。
anou 2016年

2
这不适用于功能模块,而是hook_views_api_alter()按此处所述使用:deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson,

2

另一种方法是使用“ hook_theme”定义模板,如本文所述:http ://grayside.org/2010/09/how-override-views-field-template-module

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.