在某些Drupal节点上运行PHP代码

时间:2012-03-28 16:06:08

标签: drupal drupal-6 drupal-modules

我的Drupal 6安装已禁用php过滤器,因此我无法在节点本身中使用<?php ... ?>

我有一个案例需要在少量页面上运行一些PHP代码。 Drupal 6中是否有一种方法可以创建一个匹配URL模式的模块,然后在显示页面执行函数之前?

具体来说,在几个页面上我需要处理一些数据,然后发送HTTP标头。我知道我可以为这些页面创建一个自定义的.tpl文件,但是将这样的应用程序逻辑放在.tpl文件中就像是一个黑客。

1 个答案:

答案 0 :(得分:1)

如果您想专门为节点页面执行此操作,那么您最好不要实现hook_nodeapi()。这意味着您无需根据网址执行匹配,也可以以最“结构化”的方式添加标题:

function MYMODULE_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == 'view') {
    drupal_set_header('some header');
  }
}

如果您需要为非节点页面执行此操作,那么您将需要实现hook_init()

function MYMODULE_init() {
  if ($_GET['q'] == 'node/1') { // or whatever path
    drupal_set_header('some header');
  }
}

在将标头发送到客户端之前,都会调用两个挂钩,因此无论哪种方式都可以。