Obtenez l'ID de vocabulaire par terme ou nœud

9

Je vais vérifier si un terme appartient à un vocabulaire désigné.

Quelle fonction est utilisée pour obtenir du vocabulaire par terme ou nœud?

Charles Yeung
la source

Réponses:

15

Dans Drupal 6, si vous connaissez l'ID de terme de taxonomie, vous pouvez obtenir l'ID de vocabulaire en utilisant le code suivant:

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

Si vous avez un ID de nœud, vous pouvez utiliser le code suivant pour obtenir l'ID de vocabulaire de tous les termes de taxonomie associés au nœud à l'aide du code suivant:

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

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

Dans Drupal 7, le code serait le suivant:

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

Dans Drupal 7, la propriété node $node->taxonomyn'existe plus. Au lieu de cela, il y a $node->field_<vocabulary_name>, qui est un tableau avec deux structures différentes.

  • Mots clés

    capture d'écran

  • autres termes de taxonomie

    capture d'écran

En utilisant field_get_items () , vous obtiendriez les termes de taxonomie dans la langue dans laquelle ils seraient affichés, ou dans la langue dont le code est passé en argument à la fonction.

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

$nodecontient l'objet nœud et $field_namele nom du champ de terme de taxonomie.

$itemscontient un tableau simplifié, comparé au tableau contenu dans $node->field_<vocabulary_name>.

capture d'écran

kiamlaluno
la source
1

Pour Drupal 7, le code ci-dessus devrait être comme ceci:

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

Voir plus d'exemples à la fonction db_query () drupal 7.

TheodorosPloumis
la source
0

Résolu par le code ci-dessous:

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