我试图设置一个自定义消息,在用户提交新节点后显示给用户。此消息将替换标准的'@type%title已创建。'
我尝试使用带有$ op'insert'的hook_nodeapi,但无论我如何尝试更改模块权重,我的自定义消息总是首先显示在核心drupal消息之前。
这不会起作用,因为我需要在发送自己的自定义消息之前调用drupal_get_messages()删除原始消息。
这个工作流程让我感到疯狂,任何人都可以帮助我指出正确的方向吗?
干杯。
答案 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.');
}
}