2012-06-21 65 views
0

如何通過SQL將分類術語直接添加到節點?通過SQL直接向節點添加分類術語(term_node)

我使用:

db_query("INSERT INTO {term_node} (nid, vid, tid) VALUES (" . $row['nid'] . "," . $the_term->vid . "," . $row['next_tid'] . ")"); 

$row['nid']$the_term->vid$row['next_tid']正確;但節點中仍然沒有出現任何術語。

回答

2

而是直接寫入數據庫,爲什麼不叫taxonomy_node_save()方法:http://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/function/taxonomy_node_save/6

這種方式可以確保您不會錯過該函數的作用任何額外的步驟(甚至小到「刷新期限緩存':-)

讓我知道,如果這工作了!

+0

嗨,感謝您的提示,但我使用了hook_cron,並在那裏添加了條款。我看着這個功能。之前,但問題在於代碼 - >對於多元詞彙來說它會非常大,另一個問題是必須再次添加到節點的舊術語。 SQL非常簡單和短小,有隻有3個值的表。也許我錯了。你有一些建議嗎?我的努力重新爲D6的「分類定時器」。我將我的版本添加到此模塊的[issue queue](http://drupal.org/node/377450),但是與cron_hook resp有一些問題。添加條款。 – marinex

+0

我不知道我們是否誤解了對方。我的意思是,而不是「db_query(...)」的代碼行,您應該有一行代碼調用該函數:「taxonomy_node_save($ node,$ terms)」。我不是說你應該複製和粘貼函數的代碼到你的cron_hook中,而只是你應該調用它。那有意義嗎?當一個API函數可以做你想做的事時,最好使用它來代替自己重新創建它的功能。這樣你就會知道你正在把所有的事情都做好! –

+0

啊,也只是想確保你看到了我上面給出的URL的代碼摘錄:http://api.drupal.org/api/drupal/modules%21taxonomy%21taxonomy.module/function/taxonomy_node_save/6#comment -5749。這是一個可以幫助你的函數,它已經作爲你在SQL語句中已經使用過的node,tid和vid的參數。 :-)只是想確保你看到了! –

0

你們在談論Drupal 7嗎?在這種情況下,你應該考慮至少兩張表。 Drupal 7中的CCK爲每個字段創建兩個表格:field_data_field_<fieldname>e field_revision_field_<fieldname>

相關問題