3

ユーザーが新しいノードを送信した後に表示されるカスタム メッセージを設定しようとしています。このメッセージは、標準の「@type %title が作成されました」に置き換わるものです。

「挿入」の $op で hook_nodeapi を使用しようとしましたが、モジュールの重みをどのように変更しようとしても、カスタム メッセージは常にコア 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 に答える