2010-07-19 7 views
3

Je crée un module qui doit marquer des nœuds avec des termes de taxonomie lorsqu'ils sont créés. J'ai mis en hook_nodeapi() pour ce faire, et je tente d'ajouter le terme là comme ceci:Comment puis-je ajouter par programme des termes de taxonomie à un nœud dans 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; 
    } 
} 

Quand j'appelle node_save(), le code va juste pour une boucle, car node_save appelle hook_nodeapi (). Quand je n'appelle pas node_save, rien n'est sauvegardé. Je suis duré si je le fais, duré si je ne le fais pas. Des idées sur la bonne façon de faire thi?

Répondre

3

Vous pouvez utiliser $op="presave" pour modifier la taxonomie comme vous le souhaitez, puis laisser le module de taxonomie enregistrer les termes pour vous. Pas besoin d'utiliser node_save par la suite. En fait, l'enregistrement de nœud devrait être évité dans les implémentations de nodeapi pour les raisons que vous avez indiquées.

0

utiliser un hook_form_alter() pour l'ajouter à la $form_state

+0

Est-ce que cela exigera un appel à node_save() ou non? – itsbruce