Drupal,关于自定义模块的问题

时间:2010-06-24 21:42:55

标签: drupal drupal-6

我刚开始创建自己的模块来制作自定义函数,例如hook_form_alter()等......

现在我真的想知道如何使用自定义模块对某些模块进行小的更改。例如,考虑View模块,我想修改文件:“views-view.tpl.php”..让我们说改变这个div类的名称

...
<div class="view-filters">
      <?php print $exposed; ?>
    </div>

如何在不破解代码的情况下制作它?

感谢

3 个答案:

答案 0 :(得分:3)

要更改 .views-filters div的CSS类,您需要提供备用views-view.tpl.php(或views-view--VIEWNAME.tpl.phpviews-view--VIEWNAME--DISPLAYID.tpl.php) 。这通常很容易done in the theme。但如果需要,也可以从模块中完成:

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

这允许您将重写的views-view.tpl.php模板文件放在模块的themes目录中。为了使其正常工作,您的功能的权重应大于提供覆盖模板的模块的权重。因此,在您的模块安装文件(YOURMODULE.install)中,您将拥有类似

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

答案 1 :(得分:1)

更改tpl用于视图的最简单方法是为要使用的视图提供TPL。如果单击视图中的“主题:信息”,它将列出各种方法,可以将整个视图的输出覆盖到字段级别。

答案 2 :(得分:1)

您很少需要编辑贡献模块或核心(如果这是您的黑客行为)。

答案是肯定的!

话虽如此,一些模块写得很差。如果您无法编写接口或将其分叉,则需要破解它并向项目的发布队列提交补丁。然后您的更改可能会包含在下一个版本中。

相关问题