Получить идентификатор словаря по термину или узлу

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.

TheodorosPloumis
источник
0

Решено кодом ниже:

$tid = 18;    
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
Чарльз Юнг
источник