3

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

我已经尝试将 hook_nodeapi 与 $op of 'insert' 一起使用,但无论我如何尝试更改模块权重,我的自定义消息总是首先出现在核心 drupal 消息之前。

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

这个工作流程让我发疯,有人能帮我指出正确的方向吗?

干杯。

4

1 回答 1

0

查看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.');
  }
}
于 2011-03-31T00:24:08.773 回答