如何替换从Drupal中的模块加载的page.tpl.php?

时间:2010-01-20 15:51:32

标签: drupal drupal-6

我在Drupal中有一个自定义模块,用于输出序列化的数据转储。我想要这个转储似乎不使用活动主题的页面。相反,我只是希望数据转储显示没有任何HTML标记,主题,JS,CSS等。只是转储(另一个网站将消耗它)。

如果我在主题级别执行此操作,我只需创建一个新的page.tpl.php文件,以显示特定内容类型,而不显示任何主题,HTML等。但我需要在模块级别执行此操作只是这个模块创建的一个页面,因为这个模块将安装在不同的Drupal站点上。

有没有办法在模块级别禁用所有主题并控制模块页面的HTML包装输出?我真正想做的就是“关掉它”,如果可能的话。

我正在使用Drupal 6.

2 个答案:

答案 0 :(得分:7)

嗯,这是一种不同的方法,但总是对我有效。

当在模块中调用页面回调时,不是返回数据(将主题化它),而是打印或回显数据而不返回该函数。

答案 1 :(得分:5)

对于给定的用例(输出自动消费的原始数据),克里斯的答案肯定是要走的路(+1)。

为了完整起见,并且作为从模块中替换page.tpl.php 的问题的明确答案,还可以实现moduleName_preprocess_page(&$variables)函数。在该函数中,$variables['template_files']将包含一系列文件名建议。与Drupal实例中的现有* .php.tpl文件匹配的第一个文件将用作该请求的page.tpl.php文件,因此将现有条目替换为例如'moduleName_page.tpl.php'会导致该文件用于主页。

当然,必须确保之后没有其他模块再次操纵建议。或者,也可以将文件名放入$variables['template_file'] - 稍后将与$variables['template_files']合并,但'template_file'条目最终将作为第一个。