我试图设置一条自定义消息,在用户提交新节点后显示给用户。此消息将替换标准的“@type %title 已创建”。
我已经尝试将 hook_nodeapi 与 $op of 'insert' 一起使用,但无论我如何尝试更改模块权重,我的自定义消息总是首先出现在核心 drupal 消息之前。
这不起作用,因为我需要在发送我自己的自定义消息之前调用 drupal_get_messages() 来删除原始消息。
这个工作流程让我发疯,有人能帮我指出正确的方向吗?
干杯。
我试图设置一条自定义消息,在用户提交新节点后显示给用户。此消息将替换标准的“@type %title 已创建”。
我已经尝试将 hook_nodeapi 与 $op of 'insert' 一起使用,但无论我如何尝试更改模块权重,我的自定义消息总是首先出现在核心 drupal 消息之前。
这不起作用,因为我需要在发送我自己的自定义消息之前调用 drupal_get_messages() 来删除原始消息。
这个工作流程让我发疯,有人能帮我指出正确的方向吗?
干杯。
查看node_form_submit()函数。注意它做了一个node_save($node);
before drupal_set_message(t('@type %title has been created.', $t_args));
。
如果你然后检查node_save(),你会看到'insert' $op 被调用的地方。因此,在您希望更改的消息输出之前调用 hook_nodeapi 的“插入”操作。
您可以在此问题队列评论中找到一些解决方法。您可能还想查看自定义提交消息模块,这是问题队列线程的来源。
如果它可能有帮助,在过去,我有时会求助于编写一个实现 hook_nodeapi 的迷你模块,以了解这些钩子是如何被触发的:
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch ($op) {
dpm('hook_nodeapi '. $op .' fired.');
}
}