Какую операцию я должен использовать для записи информации об узле в электронное письмо при сохранении узла?


Я использую hook_nodeapi() для отображения информации об узле в электронном письме, когда пользователь нажимает кнопку "Сохранить". Я попытался написать код для операции "предварительное сохранение", но это сработало не так, как я хотел. Я попытался с помощью запроса извлечь данные узла, но данных не было в базе данных до завершения операции "после сохранения".

Какой $op подходит для меня? Я тоже попробовал "вставить", но это не сработало.

Author: kiamlaluno, 2012-05-07

1 answers

Благодаря небольшим ответам на другие ваши вопросы ( этот и этот ) Я думаю, что знаю, в чем проблема.

Не вдаваясь в подробности, модуль содержимого (CCK) также реализует hook_nodeapi(), чтобы зафиксировать данные поля в базе данных. В настоящее время происходит то, что крючки, реализованные вашим модулем, вызываются до крючков для модуля содержимого, что означает, что во время выполнения вашей реализации hook_nodeapi(), Реализация CCK не была запущена ; следовательно, данные не найдены в базе данных.

По моему опыту, если вы явно не зададите вес определенных модулей, они упорядочены по названию в алфавитном порядке, и поскольку имя вашего модуля начинается с "а", имеет смысл, что это произойдет.

Чтобы обойти это, вам просто нужно увеличить "вес" вашего модуля в системе. Взгляните на Как обновить вес модуля для получения дополнительной информации, но, по сути, вы хотите выполнить такой запрос к вашей базе данных:

db_query("UPDATE {system} SET weight = 100 WHERE name = 'yourmodulename'");

После этого очистите кэш Drupal, и вы увидите, что все начинает вести себя немного по-другому.

 2
Author: Clive, 2017-04-13 12:46:58