【问题标题】:How do you replace the page.tpl.php that loads from a module in Drupal?如何替换从 Drupal 中的模块加载的 page.tpl.php?
【发布时间】:2010-01-20 15:51:32
【问题描述】:

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

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

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

我正在运行 Drupal 6。

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

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

    当您的页面回调在模块中被调用时,而不是返回数据(将主题化),只是打印或回显数据并且不返回函数。

    【讨论】:

    【解决方案2】:

    对于给定的用例(输出原始数据以供自动消费),Chris 的回答绝对是可行的方法 (+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”条目将作为第一个条目结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多