我的Drupal 6安装已禁用php过滤器,因此我无法在节点本身中使用<?php ... ?>
。
我有一个案例需要在少量页面上运行一些PHP代码。 Drupal 6中是否有一种方法可以创建一个匹配URL模式的模块,然后在显示页面执行函数之前?
具体来说,在几个页面上我需要处理一些数据,然后发送HTTP标头。我知道我可以为这些页面创建一个自定义的.tpl文件,但是将这样的应用程序逻辑放在.tpl文件中就像是一个黑客。
答案 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');
}
}
在将标头发送到客户端之前,都会调用两个挂钩,因此无论哪种方式都可以。