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?
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?
Réponses:
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->taxonomy
n'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
autres termes de taxonomie
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);
$node
contient l'objet nœud et $field_name
le nom du champ de terme de taxonomie.
$items
contient un tableau simplifié, comparé au tableau contenu dans $node->field_<vocabulary_name>
.
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.
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;