Отримайте ідентифікатор словника за терміном або вузлом


9

Я збираюся перевірити, чи належить термін до визначеної лексики.

Яка функція використовується для отримання лексики за терміном чи вузлом?

Відповіді:


15

У Drupal 6, якщо ви знаєте ідентифікатор терміна таксономії, ви можете отримати ідентифікатор словника, використовуючи наступний код:

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

Якщо у вас є ідентифікатор вузла, ви можете використовувати наступний код, щоб отримати ідентифікатор словника всіх термінів таксономії, пов'язаних з вузлом, використовуючи наступний код:

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

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

У Drupal 7 код буде таким:

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

У Drupal 7 властивість вузла $node->taxonomyвже не існує. Натомість є $node->field_<vocabulary_name>, що представляє собою масив з двома різними структурами.

  • теги

    скріншот

  • інші терміни систематики

    скріншот

Використовуючи field_get_items () , ви отримаєте терміни таксономії на мові, на якій вони будуть відображатися, або на мові, чий код передається як аргумент функції.

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

$nodeмістить об'єкт вузла та $field_nameім'я поля терміна таксономії.

$itemsмістить спрощений масив порівняно з масивом, що міститься в $node->field_<vocabulary_name>.

скріншот


1

Для Drupal 7 наведений вище код повинен бути таким:

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

Дивіться більше прикладів на db_query () функцію drupal 7.


0

Вирішено кодом нижче:

$tid = 18;    
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.