Uzyskaj identyfikator słownictwa według terminu lub węzła

9

Sprawdzę, czy termin należy do wyznaczonego słownictwa.

Jakiej funkcji używa się, aby uzyskać słownictwo według terminu lub węzła?

Charles Yeung
źródło

Odpowiedzi:

15

W Drupal 6, jeśli znasz identyfikator terminologii, możesz uzyskać identyfikator słownictwa, używając następującego kodu:

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

Jeśli masz identyfikator węzła, możesz użyć następującego kodu, aby uzyskać identyfikator słownictwa wszystkich terminów taksonomicznych powiązanych z węzłem za pomocą następującego kodu:

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

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

W Drupal 7 kod byłby następujący:

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

W Drupal 7 właściwość node $node->taxonomyjuż nie istnieje. Zamiast tego istnieje $node->field_<vocabulary_name>tablica o dwóch różnych strukturach.

  • tagi

    zrzut ekranu

  • inne warunki taksonomiczne

    zrzut ekranu

Używając field_get_items () , otrzymujesz warunki taksonomii w języku, w którym będą wyświetlane, lub w języku, którego kod jest przekazywany jako argument funkcji.

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

$nodezawiera obiekt węzła i $field_namenazwę pola terminu systematyki.

$itemszawiera uproszczoną tablicę w porównaniu do tablicy zawartej w $node->field_<vocabulary_name>.

zrzut ekranu

kiamlaluno
źródło
1

Dla Drupala 7 powyższy kod powinien wyglądać tak:

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

Zobacz więcej przykładów w funkcji drupal 7 db_query () .

TheodorosPloumis
źródło
0

Rozwiązany przez poniższy kod:

$tid = 18;    
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
$vid = db_result($result);
echo $vid;
Charles Yeung
źródło