নোডে বরাদ্দ করা সমস্ত ট্যাক্সনোমির শর্তগুলির একটি তালিকা আমি কীভাবে পেতে পারি?


13

আমার একটি নোড রয়েছে এবং নোডকে দেওয়া সমস্ত ট্যাক্সনোমির শর্তাদি পেতে চাই।

ড্রুপাল 6 এ আমি ব্যবহার করতে পারি $node->taxonomyএবং taxonomy_*ফাংশনগুলি কিন্তু এগুলি ড্রুপাল 7 তে বিদ্যমান নয়।

উত্তর:


21

শ্রবণশক্তি শর্তাবলী দ্রুপাল in এর ক্ষেত্রগুলিতে প্রয়োগ করা হয় Ass অনুমান করে আপনি আপনার সামগ্রীর প্রকারের জন্য ক্ষেত্রের_শ্রেণীর নামক একটি শ্রেণিবদ্ধ ক্ষেত্রটিকে সংজ্ঞায়িত করেছেন, আপনি এটি এতে প্রবেশ করতে পারবেন:

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

তবে মনে রাখবেন, আপনার যদি একাধিক ট্যাক্সনোমি ক্ষেত্র থাকে তবে আপনি বিভিন্ন শব্দভাণ্ডার থেকে পদক্ষেপের ঝাঁকুনির বিষয়টি শেষ করতে পারেন।


আমি যদি ট্যাক্সনমি ক্ষেত্রের নামটি না জানি? নামগুলি সামগ্রীর ধরণের মধ্যে পৃথক হবে এবং আমি কোনও নোডের জন্য সমস্ত পদ পেতে চাই।
Rwky

1
আপনি যদি ক্ষেত্রের নাম না জানেন তবে একটি পদ্ধতি যুক্ত করা হয়েছে।
কিথম

4
বিশেষত দ্বিতীয় সংস্করণে, আপনি taxonomy_term_load_multiple($results->fetchCol());একক কোয়েরিতে শর্তাদি লোড করতে ব্যবহার করতে পারেন ।
বারদির

1
ওহ, এবং আপনি field_get_items('node', $node, 'field_category')সঠিক ভাষায় ক্ষেত্রগুলি পেতে ব্যবহার করতে পারেন ।
বারদির

টেকনোমমি_আইডেক্স কৌশলটি নির্বাচনটি কেবল প্রকাশিত নোডের সাথে কাজ করে মনে রাখবেন। সেই টেবিলটি অপ্রকাশিত সামগ্রীর জন্য রক্ষণাবেক্ষণ করা হয় না।
ডেভ কোহেন

2

ক্ষেত্রের নাম উল্লেখ না করে এবং কোনও ডিবি_কিউরি না করে সমস্ত শর্তাদি ধরার খুব সাধারণ উপায় এখানে:

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

ড্রুপাল শিক্ষানবিসের জন্য, আমি আপনার ফাংশনটি কাজ করার জন্য এবং if (arg(0) == 'node' && is_numeric(arg(1))) {$nid = arg(1);}পেতে যোগ করব । nid$node = node_load($nid);
সাবস্টিয়ান জিকুয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.