保存新节点后设置自定义消息

时间:2011-03-30 17:58:06

标签: drupal-6 nodeapi

我试图设置一个自定义消息,在用户提交新节点后显示给用户。此消息将替换标准的'@type%title已创建。'

我尝试使用带有$ op'insert'的hook_nodeapi,但无论我如何尝试更改模块权重,我的自定义消息总是首先显示在核心drupal消息之前。

这不会起作用,因为我需要在发送自己的自定义消息之前调用drupal_get_messages()删除原始消息。

这个工作流程让我感到疯狂,任何人都可以帮助我指出正确的方向吗?

干杯。

1 个答案:

答案 0 :(得分:0)

查看node_form_submit()功能。请注意,它在node_save($node);之前执行了drupal_set_message(t('@type %title has been created.', $t_args));

如果你再查看node_save(),你就会看到'insert'$ op被调用的地方。因此,在您希望更改的消息得到输出之前,会调用hook_nodeapi的'insert'操作。

您可以找到some workarounds described in this issue queue comment。您可能还想查看问题队列线程所在的Custom Submit Messages module

如果它可能有所帮助,过去,我有时会编写一个实现hook_nodeapi的迷你模块,以找出钩子被解雇的方式:

function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  switch ($op) {
    dpm('hook_nodeapi '. $op .' fired.');
  }
}