Кришпер 19 апреля 2018 в 23:45 Есть hook_node_insert() и hook_node_update(). В обоих написано, как я понял, что они юзаются до того как поля сохраняются в бд, а мне надо именно после сохранения ноды(создания файлов, записи в бд). Drupal7 Есть вопрос Решение проблем Блог Войдите или зарегистрируйтесь, чтобы отправлять комментарии
sas@drupal.org 20 апреля 2018 в 8:25 Они выполняются после сохранения полей в базу данных и создания ноды.
Кришпер 20 апреля 2018 в 10:17 Почему-то у меня зависает, когда что-то добавляю, а при drupal_message сразу ошибка, притом в логах ничего нет. <?phpfunction global_save_product_node_update($node) { global $user; if ( in_array('test', $user->roles) ) { //drupal_message( $node->nid ); $nodeX = node_load(13440); $nodeX->title = '9999'; node_save($nodeX); }}?>
sas@drupal.org 20 апреля 2018 в 12:15 Дело в том что node_update как раз вызывается из node_save у Вас получается рекурсия, если Вы хотите поменять тайтл сделайте это на https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function... P.S. $node уже объект полный поэтому node_load делать не надо кроме того он загрузится у Вас из cache.
gun_dose 20 апреля 2018 в 13:43 Да, совершенно верно. Если сохранять какие-то ноды в таких хуках, то обязательно нужно ставить условие, чтобы не попасть в рекурсию.
bumble 20 апреля 2018 в 18:15 Кришпер wrote: при drupal_message сразу ошибка Потому что drupal_set_message: https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drup...
Комментарии
Они выполняются после сохранения полей в базу данных и создания ноды.
Почему-то у меня зависает, когда что-то добавляю, а при drupal_message сразу ошибка, притом в логах ничего нет.
<?phpfunction global_save_product_node_update($node) {
global $user;
if (
in_array('test', $user->roles)
)
{
//drupal_message( $node->nid );
$nodeX = node_load(13440);
$nodeX->title = '9999';
node_save($nodeX);
}
}?>
Дело в том что node_update как раз вызывается из node_save у Вас получается рекурсия, если Вы хотите поменять тайтл сделайте это на https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function...
P.S. $node уже объект полный поэтому node_load делать не надо кроме того он загрузится у Вас из cache.
Да, совершенно верно. Если сохранять какие-то ноды в таких хуках, то обязательно нужно ставить условие, чтобы не попасть в рекурсию.
Потому что drupal_set_message: https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drup...