Рассмотрим технику того, как выполнить node_save во время hook_node_insert.
Проблема в том, что во время данного хука мы еще находимся в транзакции и выполнить сохранение ноды прямо тут коде функции — не получится. Т.е. следующий код работать не будет:
|
|
/** * Implements hook_node_insert. */ function MYMODULE_node_insert($node) { ... node_save($node); } |
Но можно подготовить собственную run-time зацепку на завершение работы кода друпала и выполнить нужные нам операции. Выглядит это следующим образом:
|
|
/** * Implements hook_node_insert. */ function MYMODULE_node_insert($node) { // Запускаем нужный код уже после того как нода вставлена drupal_register_shutdown_function('_MYMODULE_shutdown', $node); } function _MYMODULE_shutdown($node) { ... node_save($node); } |
Drupal 7
Данная запись опубликована в 13.04.2021 14:52 и размещена в рубрике Drupal.
Вы можете перейти в конец страницы и оставить ваш комментарий.
Мало букафф? Читайте есчо !
Октябрь 20, 2019 г.
Столкнулся со следующим неприятным багом, при использовании модуля pathauto, совместно с модулем транслитерации: Drupal генерирует "обрезанные" синонимы адресов страниц.
Длина получаемого синонима плавала от 40-70 символов, и я никак не мог понять ...
Читать
Май 24, 2019 г.
Пример кода, как программно реализовать создание параграфа (речь идет о модуле - paragraphs).
Обычно параграфы создаются редакторами через админку, но иногда требуется создать новый параграф с помощью кода, например, при импорте данных, структурных ...
Читать
Апрель 14, 2022 г.
В bootstrap корневой пункт меню с подпунктами (dropdown menu) не является активной ссылкой и лишь служит кнопкой для развертывания подпунктов. Тем временем ...
Читать
Январь 21, 2019 г.
Theme API к сожалению не даёт прямого метода, чтобы прочитать это значение. Как его получить?
Иногда программно нужно установить, что именно видит пользователь на фронт-енд (какую тему использует движок).
Необходимость возникает из-за того, ...
Читать