【问题标题】:Add taxonomy terms directly to node through SQL (term_node)通过 SQL (term_node) 将分类术语直接添加到节点
【发布时间】:2012-06-21 16:31:11
【问题描述】:

如何通过 SQL 将分类术语直接添加到节点?

我用过:

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'] 的值是正确的;但节点中仍然没有出现任何术语。

【问题讨论】:

    标签: drupal drupal-6 drupal-taxonomy drupal-nodes


    【解决方案1】:

    与其直接写入数据库,不如调用 taxonomy_node_save() 方法:http://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/function/taxonomy_node_save/6

    通过这种方式,您可以确保不会遗漏该函数执行的任何其他步骤(甚至小到最后的“刷新术语缓存”。:-)

    如果这行得通,请告诉我!

    【讨论】:

    • 您好,谢谢您的提示,但我使用 hook_cron 并在那里向节点添加术语。我看了这个功能。以前,但问题是代码-> 对于多词汇表来说它会非常大,另一个问题是必须再次添加到节点的旧术语。 SQL 非常简单和简短,表中只有 3 个值。也许我错了。你有什么建议。我的努力被称为 D6 的“分类计时器”。我将我的版本添加到此模块的issue queue,但 cron_hook resp 有一些问题。添加条款。
    • 不知道我们是不是误会了。我的意思是,您应该使用一行代码来调用该函数,而不是“db_query(...)”这行代码:“taxonomy_node_save($node, $terms)”。我并不是说你应该复制并粘贴函数的代码到你的 cron_hook 中,只是你应该调用它。那有意义吗?当 API 函数可用于执行您想要的操作时,最好使用它而不是自己重新创建它的功能。这样你就知道你做对了!
    • 啊,也只是想确保您看到我在上面给出的 URL 上的代码摘录:api.drupal.org/api/drupal/modules%21taxonomy%21taxonomy.module/…。这是一个可以帮助您的函数,它具有节点、tid 和 vid 作为参数,您已经在上面的 SQL 语句中使用了它们。 :-) 只是想确保你看到了!
    • 我明白你说的。但是对于 $terms 来说,它必须是一系列新闻术语和旧术语,但为什么要再次加载旧术语。只添加新术语会更轻松。对于 tagg,这必须是 array('tags' => array( $vid => 'tag1, tag2'),对于其他术语,它应该是 array('term1, term2')。我看到了 taxonomy_node_save 的源代码 :-) 和有 sql statemets db_query('INSERT INTO {term_node} (nid, vid, tid) VALUES (%d, %d, %d)', $node->nid, $node->vid, $tid) ; 这些 sql 与我所做的相同,但从未在节点上看到我的条款 ...
    • 所以我解决了我的问题。这是我的错误,因为我的价值观不正确。我的价值不好 $the_term->vid 请参阅Mystery vid column in term_node table。我以为是词汇 ID,但它是版本 ID :-)。所以正确的值是 $node->vid 而不是 $term->vid :-) 所以如果你的词汇表中有一些术语并且你想将你的术语添加到一个节点,你只需执行 db_query('INSERT INTO {term_node} (nid, vid, tid) 值 (%d, %d, %d)', $node->nid, $node->vid, $tid);就是这样:-)
    【解决方案2】:

    你们是在谈论 Drupal 7 吗?在这种情况下,您应该考虑至少另外两个表。 Drupal 7 中的 CCK 为每个字段创建两个表:field_data_field_<fieldname>e field_revision_field_<fieldname>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多