it-swarm-id.com

Bagaimana cara saya mendapatkan daftar semua istilah taksonomi yang ditugaskan ke sebuah simpul?

Saya memiliki simpul dan ingin mendapatkan semua istilah taksonomi yang ditugaskan ke simpul.

Di drupal 6 saya bisa menggunakan $node->taxonomy dan taxonomy_* berfungsi tetapi ini tidak ada di drupal 7.

13
Rwky

Istilah taksonomi diterapkan di bidang dalam Drupal 7. Dengan asumsi Anda telah mendefinisikan bidang taksonomi bernama field_category untuk jenis konten Anda, Anda dapat mengaksesnya sebagai:

$language = 'und'; // or will be provided by some Drupal hooks
foreach ($node->field_category[$language] as $delta => $value) {
  $term = taxonomy_term_load($value['tid']);
}

Jika Anda tidak memiliki akses ke nama bidang, mungkin cara termudah ntuk node adalah dengan query database secara langsung:

$results = db_query('SELECT tid FROM {taxonomy_index} WHERE nid = :nid', array(':nid' => $node->nid));
foreach ($results as $result) {
  $term = taxonomy_term_load($result->tid);
}

Perlu diingat, bahwa Anda mungkin akhirnya berurusan dengan tumpukan istilah dari berbagai kosa kata jika Anda memiliki lebih dari satu bidang taksonomi.

21
keithm

Berikut adalah cara yang sangat umum untuk mengambil semua istilah tanpa menentukan nama bidang dan tidak ada db_query:

function example_get_terms($node) {
  $terms = array();

  foreach (field_info_instances('node', $node->type) as $fieldname => $info) {
    foreach (field_get_items('node', $node, $fieldname) as $item) {
      if (is_array($item) && !empty($item['tid']) && $term = taxonomy_term_load($item['tid'])) {
        $terms[] = $term->name;
      }
    }
  }
  return $terms;
}
2
Ronnbot