Obter o ID do vocabulário por termo ou nó

9

Vou verificar se um termo pertence a um vocabulário designado.

Qual função é usada para obter vocabulário por termo ou nó?

Charles Yeung
fonte

Respostas:

15

No Drupal 6, se você souber o ID do termo de taxonomia, poderá obter o ID do vocabulário usando o seguinte código:

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

Se você tiver um ID do nó, poderá usar o código a seguir para obter o ID do vocabulário de todos os termos de taxonomia associados ao nó usando o seguinte código:

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

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

No Drupal 7, o código seria o seguinte:

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

No Drupal 7, a propriedade do nó $node->taxonomynão existe mais. Em vez disso, existe $node->field_<vocabulary_name>uma matriz com duas estruturas diferentes.

  • Tag

    captura de tela

  • outros termos de taxonomia

    captura de tela

Usando field_get_items () , você obteria os termos de taxonomia no idioma em que seriam exibidos ou no idioma cujo código é passado como argumento para a função.

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

$nodecontém o objeto do nó e $field_nameo nome do campo do termo de taxonomia.

$itemscontém uma matriz simplificada, em comparação com a matriz contida em $node->field_<vocabulary_name>.

captura de tela

kiamlaluno
fonte
1

Para o Drupal 7, o código acima deve ser assim:

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

Veja mais exemplos na função db_query () drupal 7.

TheodorosPloumis
fonte
0

Resolvido pelo código abaixo:

$tid = 18;    
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
Charles Yeung
fonte