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?
la source
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?
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;