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