3

我正在创建一个模块,该模块需要在创建节点时用分类术语标记节点。我已经实现了 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 时,什么都没有保存。如果我这样做,我就会被淘汰,如果我不这样做,我就会被淘汰。关于正确方法的任何想法?

4

2 回答 2

3

您可以使用$op="presave"以您想要的方式更改分类,然后让分类模块为您保存术语。之后无需使用 node_save 。实际上,出于您陈述的原因,应该在 nodeapi 实现中避免节点保存。

于 2010-07-20T06:20:27.067 回答
0

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

于 2011-05-11T20:49:54.280 回答