我正在创建一个模块,需要在创建时使用分类术语标记节点。我已经实现了hook_nodeapi()来实现这一点,我试图在那里添加这个术语:
function hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch ($op) {
case 'insert':
$node->taxonomy = array(1 => taxonomy_get_term(1));
node_save($node);
break;
}
}
当我调用node_save()时,代码只是进入循环,因为node_save调用了hook_nodeapi()。当我不调用node_save时,不会保存任何内容。如果我这样做,我会被贬低,如果我不这样做,就转过身去。有关正确方法的任何想法吗?
答案 0 :(得分:3)
您可以使用$op="presave"
以您希望的方式更改分类,然后让分类模块为您保存条款。之后无需使用node_save。实际上,由于您声明的原因,应该在nodeapi实现中避免节点保存。
答案 1 :(得分:0)
使用hook_form_alter()
将其添加到$form_state