D7では、分類用語にフィールドをプログラムで追加/変更するにはどうすればよいですか?それらは明らかにフィールド化可能であり、UIではノードでフィールドを追加する場合と同じようにフィールドを追加および編集できますが、コードでは簡単な作業ではないことが判明しました。りんごやバナナのような用語でフルーツという名前の語彙があるとします。という名前のフィールドを追加したmain_article_id
ので、すべての用語には名前、説明、およびメイン記事IDがあります。Fruitボキャブラリー(field_fruit
)への参照を持つApplesという名前のノードを作成し、Apples用語が選択されている場合、コードはApples用語を更新し、そのmain_article_id
フィールドをに設定する必要があり$node->nid
ます。これが私のコードです:
//hook_node_insert fires after new node has been inserted into db
function MYMODULE_node_insert($node)
{
$taxonomy_term_id = $node->field_FRUIT[LANGUAGE_NONE][0]['value'];
$taxonomy_term = taxonomy_term_load($value['tid']);
if($taxonomy_term != FALSE)
{
//doesn't work
$taxonomy_term->field_main_article_id[LANGUAGE_NONE][0]['value'] = $node->nid;
taxonomy_term_save($taxonomy_term);
}
}
$value['tid']
、コードの誤りをお詫びします。しかし、私のフィールドを作成するためにモジュールを使用していません。語彙フィールドの編集ページで手動で追加しました。UIで編集するときに、taxonomy_termを確認しようとしました。hook_taxonomy_term_presave($ term)$ termの内部では、次のようになっていprint_r()
ます:stdClass Object([tid] => 20 [vid] => 6 [name] => Fruit ... [field_main_article_id] => Array([und] => Array([0] => Array([value] => 14)))