Постпрцессор сохранения ноды

Главные вкладки

Аватар пользователя Кришпер Кришпер 19 апреля 2018 в 23:45

Есть hook_node_insert() и hook_node_update().
В обоих написано, как я понял, что они юзаются до того как поля сохраняются в бд, а мне надо именно после сохранения ноды(создания файлов, записи в бд).

Комментарии

Аватар пользователя Кришпер Кришпер 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 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 gun_dose 20 апреля 2018 в 13:43

Да, совершенно верно. Если сохранять какие-то ноды в таких хуках, то обязательно нужно ставить условие, чтобы не попасть в рекурсию.