如何以编程方式将分类术语添加到hook_nodeapi()中的节点?

时间:2010-07-19 23:17:02

标签: drupal taxonomy

我正在创建一个模块,需要在创建时使用分类术语标记节点。我已经实现了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时,不会保存任何内容。如果我这样做,我会被贬低,如果我不这样做,就转过身去。有关正确方法的任何想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用$op="presave"以您希望的方式更改分类,然后让分类模块为您保存条款。之后无需使用node_save。实际上,由于您声明的原因,应该在nodeapi实现中避免节点保存。

答案 1 :(得分:0)

使用hook_form_alter()将其添加到$form_state