我刚开始创建自己的模块来制作自定义函数,例如hook_form_alter()等......
现在我真的想知道如何使用自定义模块对某些模块进行小的更改。例如,考虑View模块,我想修改文件:“views-view.tpl.php”..让我们说改变这个div类的名称
...
<div class="view-filters">
<?php print $exposed; ?>
</div>
如何在不破解代码的情况下制作它?
感谢
答案 0 :(得分:3)
要更改 .views-filters div的CSS类,您需要提供备用views-view.tpl.php
(或views-view--VIEWNAME.tpl.php
或views-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)
您很少需要编辑贡献模块或核心(如果这是您的黑客行为)。
答案是肯定的!
话虽如此,一些模块写得很差。如果您无法编写接口或将其分叉,则需要破解它并向项目的发布队列提交补丁。然后您的更改可能会包含在下一个版本中。