Какую операцию я должен использовать для записи информации об узле в электронное письмо при сохранении узла?
Я использую hook_nodeapi()
для отображения информации об узле в электронном письме, когда пользователь нажимает кнопку "Сохранить". Я попытался написать код для операции "предварительное сохранение", но это сработало не так, как я хотел. Я попытался с помощью запроса извлечь данные узла, но данных не было в базе данных до завершения операции "после сохранения".
Какой $op
подходит для меня? Я тоже попробовал "вставить", но это не сработало.
1 answers
Благодаря небольшим ответам на другие ваши вопросы ( этот и этот ) Я думаю, что знаю, в чем проблема.
Не вдаваясь в подробности, модуль содержимого (CCK) также реализует hook_nodeapi()
, чтобы зафиксировать данные поля в базе данных. В настоящее время происходит то, что крючки, реализованные вашим модулем, вызываются до крючков для модуля содержимого, что означает, что во время выполнения вашей реализации hook_nodeapi()
, Реализация CCK не была запущена ; следовательно, данные не найдены в базе данных.
По моему опыту, если вы явно не зададите вес определенных модулей, они упорядочены по названию в алфавитном порядке, и поскольку имя вашего модуля начинается с "а", имеет смысл, что это произойдет.
Чтобы обойти это, вам просто нужно увеличить "вес" вашего модуля в системе. Взгляните на Как обновить вес модуля для получения дополнительной информации, но, по сути, вы хотите выполнить такой запрос к вашей базе данных:
db_query("UPDATE {system} SET weight = 100 WHERE name = 'yourmodulename'");
После этого очистите кэш Drupal, и вы увидите, что все начинает вести себя немного по-другому.