Установите пользовательское сообщение после сохранения нового узла - PullRequest
3 голосов
/ 30 марта 2011

Я пытаюсь установить пользовательское сообщение, которое будет показано пользователям после отправки нового узла. Это сообщение заменяет стандартный заголовок @type%.

Я пытался использовать hook_nodeapi с $ op для 'insert', но независимо от того, как я пытаюсь изменить вес модуля, мое пользовательское сообщение всегда появляется первым перед основным сообщением drupal.

Это не сработает, так как мне нужно вызвать drupal_get_messages (), чтобы удалить оригинальное сообщение перед отправкой моего собственного.

Этот рабочий процесс сводит меня с ума, может кто-нибудь помочь направить меня в правильном направлении?

Приветствие.

1 Ответ

0 голосов
/ 31 марта 2011

Проверьте функцию node_form_submit () . Обратите внимание, что он делает node_save($node); до drupal_set_message(t('@type %title has been created.', $t_args));.

Если вы тогда посмотрите node_save () , вы увидите, что здесь вызывается $ insert 'op op. Таким образом, операция вставки для hook_nodeapi вызывается до того, как сообщение, которое вы хотите изменить, получит вывод.

Вы можете найти некоторые обходные пути, описанные в комментарии к этой проблеме . Возможно, вы также захотите проверить модуль Настраиваемые сообщения , в котором и начинается поток этой очереди.

На случай, если в прошлом мне иногда приходилось писать мини-модуль, который реализует hook_nodeapi, чтобы выяснить, как запускаются хуки:

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