кто знает как отловить nid после вставки ноды
почему то в функции
function mcat_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
при $op==insert
он пустой?
ХОТЯ в этой функции этот хук стоит уже после добавления в базу
привожу кусок функции
db_query($node_query, $node_table_values);
db_query($revisions_query, $revisions_table_values);
// Call the node specific callback (if any):
if ($node->is_new) {
node_invoke($node, 'insert');
node_invoke_nodeapi($node, 'insert');
}
else {
node_invoke($node, 'update');
node_invoke_nodeapi($node, 'update');
}
// Update the node access table for this node.
node_access_acquire_grants($node);
// Clear the cache so an anonymous poster can see the node being added or updated.
cache_clear_all();
}
есть ли какой нить хук типа after_insert?
спасибо за умные ответы )
Комментарии
ищите где то у себя ошибку
в хук ноде апи передается вновь созданный обьект ноде с новым nid
хотябы вот таким тупым способом
if ($op === 'insert') {
var_dump($node);
die();
}
[ru-api=hook_insert] - оно, пожалуй.
[ru-api=node_save] - это так, для общего развития, как и из чего готовится нода.
Очень смутно помню, что были когда-то такие же проблемы с пятеркой.
перепроверил на свежеустановленной 5ке
проблемы незамечаю. Перадается полностью весь обьект с новым nid
быть не может
хук выполняется ПОСЛЕ инсерта. в том и соль.
на ум приходит только что
один из модулей, который вызывается раньше вашего в цепочке ноде апи, некорректно модифицирует обьект node
спасибо большое за ответы,
проверял тупо как писал Demimurych и по другому все таки пустой NODE->NID
решил проблему таким способом
node_save($node);
//а вот тут уже есть node->nid