我在Drupal中有一个自定义模块,用于输出序列化的数据转储。我想要这个转储似乎不使用活动主题的页面。相反,我只是希望数据转储显示没有任何HTML标记,主题,JS,CSS等。只是转储(另一个网站将消耗它)。
如果我在主题级别执行此操作,我只需创建一个新的page.tpl.php文件,以显示特定内容类型,而不显示任何主题,HTML等。但我需要在模块级别执行此操作只是这个模块创建的一个页面,因为这个模块将安装在不同的Drupal站点上。
有没有办法在模块级别禁用所有主题并控制模块页面的HTML包装输出?我真正想做的就是“关掉它”,如果可能的话。
我正在使用Drupal 6.
答案 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'条目最终将作为第一个。