it-swarm.asia

كيف أحصل على قائمة بجميع مصطلحات التصنيف المخصصة للعقدة؟

لدي عقدة وأريد الحصول على جميع مصطلحات التصنيف المعينة للعقدة.

في drupal 6 يمكنني استخدام $node->taxonomy و ال taxonomy_* وظائف لكن هذه لا توجد في drupal 7.

13
Rwky

يتم تنفيذ مصطلحات التصنيف في الحقول الموجودة في Drupal 7. بافتراض أنك قمت بتحديد حقل التصنيف المسمى field_category لنوع المحتوى الخاص بك ، يمكنك الوصول إليه على النحو التالي:

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

إذا لم يكن لديك حق الوصول إلى اسم الحقل ، فربما تكون أسهل طريقة للعقد هي الاستعلام عن قاعدة البيانات مباشرةً:

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

ضع في اعتبارك أنه قد ينتهي بك الأمر إلى التعامل مع مجموعة من المصطلحات من مفردات مختلفة إذا كان لديك أكثر من مجال تصنيف واحد.

21
keithm

فيما يلي طريقة عامة جدًا للحصول على جميع المصطلحات دون تحديد أسماء الحقول ولا 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