Drupal功能包括主题

时间:2010-06-11 16:19:04

标签: drupal

是否可以在Drupal功能中包含主题?如果是这样的话?

2 个答案:

答案 0 :(得分:5)

不幸的是,目前还没有。功能基本上包括可以通过各种事件挂钩干净地导出并导入Drupal的东西。主题是一种完全不同的动物。

理论上,如果您想覆盖功能中的某些标记(例如,您自己的内容类型的自定义tpl.php文件),您可以包含自定义tpl.php文件并在功能模块文件中使用与主题相关的钩子让Drupal知道模板在你模块的目录中。

答案 1 :(得分:1)

除了伊顿的回答。如果您需要覆盖另一个模块提供的现有模板(.tpl.php文件),您可以在YOUR_FEATURE.module中使用hook_theme_registry_alter

function YOUR_FEATURE_registry_alter($theme_registry) {
  $originalpath = array_shift($theme_registry['TEMPLATE']['theme paths']);
  $featurepath = drupal_get_path('module', 'YOUR_FEATURE') .'/themes');
  array_unshift($theme_registry['TEMPLATE']['theme paths'], $originalpath, $featurepath);
}

为了使其正常工作,您的功能的权重应大于提供覆盖模板的模块的权重。因此,在YOUR_FEATURE.install中,您将拥有类似

的内容
function YOUR_FEATURE_install() {
   db_query("UPDATE {system} SET weight = 10 WHERE name = 'YOUR_FEATURE'");
}