I am going to check whether a term belongs to a designated vocabulary.
Which function is used to get vocabulary by term or node?
Drupal Answers is a question and answer site for Drupal developers and administrators. It only takes a minute to sign up.
Sign up to join this communityIn Drupal 6, if you know the taxonomy term ID, you can get the vocabulary ID by using the following code:
$term = taxonomy_get_term($tid);
$vid = $term->vid;
If you have a node ID, then you can use the following code to get the vocabulary ID of all the taxonomy terms associated with the node using the following code:
$node = node_load($nid);
$vids = array();
if (!empty($node->taxonomy)) {
foreach ($node->taxonomy as $tid => $term) {
$vids[] = $term->vid;
}
}
In Drupal 7, the code would be the following:
$term = taxonomy_term_load($tid);
$vid = $term->vid;
In Drupal 7, the node property $node->taxonomy
doesn't exist anymore. Instead, there is $node->field_<vocabulary_name>
, which is an array with two different structures.
tags
other taxonomy terms
Using field_get_items(), you would get the taxonomy terms in the language they would be displayed, or in the language whose code is passed as argument to the function.
$items = field_get_items('node', $node, $field_name);
$node
contains the node object, and $field_name
the name of the taxonomy term field.
$items
contains a simplified array, compared to the array contained in $node->field_<vocabulary_name>
.
For Drupal 7 the above code should be like this:
$tid = 18;
$vid = db_query('SELECT vid FROM {taxonomy_term_data} WHERE tid = :tid',
array(':tid' => $tid)
)->fetchField();
echo $vid;
See more examples at db_query() drupal 7 function.
Solved by the code below:
$tid = 18;
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
In Drupal 8 :
First load the term using termId as follows :
use Drupal\taxonomy\Entity\Term;
$term = Term::load($termId);
$vocabularyId = $term->getVocabularyId();