按术语或节点获取词汇表ID


9

我要检查一个术语是否属于指定词汇。

哪个函数用于按术语或节点获取词汇?

Answers:


15

在Drupal 6中,如果您知道分类术语ID,则可以使用以下代码获取词汇ID:

$term = taxonomy_get_term($tid);
$vid = $term->vid;

如果您具有节点ID,那么可以使用以下代码使用以下代码来获取与该节点关联的所有分类法术语的词汇表ID:

$node = node_load($nid);
$vids = array();

if (!empty($node->taxonomy)) {
  foreach ($node->taxonomy as $tid => $term) {
    $vids[] = $term->vid;
  }
}

在Drupal 7中,代码如下:

$term = taxonomy_term_load($tid);
$vid = $term->vid;

在Drupal 7中,node属性$node->taxonomy不再存在。而是有$node->field_<vocabulary_name>一个具有两个不同结构的数组。

  • 标签

    屏幕截图

  • 其他分类术语

    屏幕截图

使用field_get_items(),您将以将要显示的分类法术语或将其代码作为参数传递给函数的语言获得分类法术语。

$items = field_get_items('node', $node, $field_name);

$node包含节点对象,以及$field_name分类术语字段的名称。

$items与中包含的数组相比,包含一个简化的数组$node->field_<vocabulary_name>

屏幕截图


1

对于Drupal 7,以上代码应如下所示:

 $tid = 18;
 $vid = db_query('SELECT vid FROM {taxonomy_term_data} WHERE tid = :tid', 
                  array(':tid' => $tid)
                )->fetchField();
 echo $vid;

请参阅db_query() drupal 7函数的更多示例。


0

通过以下代码解决:

$tid = 18;    
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.