Как программно добавить термины таксономии к узлу в hook_nodeapi ()? - PullRequest
3 голосов
/ 20 июля 2010

Я создаю модуль, который должен помечать узлы терминами таксономии при их создании. Я реализовал 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 ]

3 голосов
/ 20 июля 2010

Вы можете использовать $op="presave", чтобы изменить таксономию так, как вы хотите, а затем позволить таксономическому модулю сохранить условия для вас.Нет необходимости использовать node_save впоследствии.На самом деле следует избегать сохранения узла в реализациях nodeapi по указанным вами причинам.

0 голосов
/ 12 мая 2011

используйте hook_form_alter(), чтобы добавить его к $form_state

...