web-gelistirme-sc.com

Bir düğüme atanmış tüm sınıflandırma terimlerinin bir listesini nasıl alabilirim?

Bir düğüm var ve düğüme atanan tüm sınıflandırma terimleri almak istiyorum.

drupal 6 içinde $node->taxonomy ve taxonomy_* işlevi var ancak bunlar drupal 7 içinde mevcut değil.

13
Rwky

Sınıflandırma terimleri Drupal 7) içindeki alanlarda uygulanır. İçerik türünüz için field_category adında bir sınıflandırma alanı tanımladığınızı varsayarsak, ona şu şekilde erişebilirsiniz:

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

Alan adına erişiminiz yoksa, muhtemelen en kolay yol düğümler için veritabanını doğrudan sorgulamaktır:

$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);
}

Ancak, birden fazla sınıflandırma alanınız varsa farklı kelime dağarcığından gelen terimlerle uğraşabileceğinizi unutmayın.

21
keithm

Alan adlarını belirtmeden ve db_query olmadan tüm terimleri almanın çok genel bir yolu:

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