এর নাম থেকে আমি কীভাবে ট্যাক্সোনমি শব্দ আইডি পাই?


19

ট্যাক্সোনমি.মডিউল ফাংশনগুলির তালিকার একমাত্র ফাংশন যা দেখে মনে হচ্ছে এটি একটি ব্যক্তিগত ফাংশন ( _ ট্যাক্সনমি_সেট_টিড_ফ্রোম_টার্ম ) হিসাবে দেখাচ্ছে does

যদি আমি জানি সমস্তই শ্রমশক্তি পদটির নাম হয় এবং এর আইডিটি খুঁজে বের করতে হবে তবে আমার কোন ক্রিয়াকলাপটি ব্যবহার করার কথা?

উত্তর:


14

এটি ট্যাক্সোনমি_জেট_মিটার_বাই_নেম () যা আপনি নিম্নলিখিত কোড হিসাবে ব্যবহার করেন।

$term_array = taxonomy_get_term_by_name('Foo');
$term = reset($term_array); # get the first element of the array which is our term object
print $term->name;

1
এটি আমাকে একটি টিআইডি না করে একটি অ্যারে দেবে বলে মনে হচ্ছে। $foo[0]->tidকিছু করে না কারণ এটি টিআইডি সহ কীডযুক্ত অ্যারে প্রদান করে। সুতরাং টিআইডি পাওয়ার জন্য আমার টিআইডি দরকার, বা foreach()এটি কেবল একটি আইটেমের মধ্যে থাকা সত্ত্বেও? অন্যথায়:Undefined offset: 0
বেথ

3
একাধিক পদ একই নাম হতে বাধা দেয় না বলে এটি একটি অ্যারে প্রদান করে। আপনি জানতে পারবেন না এটি কেবল একটি আইটেম।
লেথারিওন

2
@ তবে, কোনও নির্দিষ্ট শব্দভাণ্ডারের সীমাবদ্ধ করতে দ্বিতীয় প্যারামিটারটি ব্যবহার করুন, বা আপনার ল্যাপস সঠিক রয়েছে কিনা তা নিশ্চিত করতে foreach ($terms as $term)পরীক্ষা করে দেখুন $term->vid
এমপিডোনাদিও

আমি খুব শীঘ্রই আমার ব্যবহৃত D6 সংস্করণে টাইপ করেছি। আমি এখন আপনার লিঙ্কগুলি / ইউআরএলগুলি থেকে দেখতে পাচ্ছি যে আপনি ডি 7 চালিয়ে যাচ্ছেন। উপরের মন্তব্যগুলিতে আপনার পক্ষে বিষয়গুলি পরিষ্কার করা উচিত।
জিমাজাম্মা

22

taxonomy_get_term_by_name() কৌশলটি করবে:

$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
  $first_term = array_shift($terms);
  print $first_term->tid;
}

4
এটিকে একটি বিশেষ শব্দভাণ্ডারে সীমাবদ্ধ করার জন্য একটি দ্বিতীয় যুক্তিও রয়েছে যা দ্রুপাল 7-এ যুক্ত হয়েছিল। এটি যখন আপনার একই নামটি ভাগ করে নেওয়ার একাধিক টিড থাকতে পারে তখন আপনি যে শব্দটি চান তা সন্ধান করতে ফলাফলের মধ্য দিয়ে লুপ নেওয়ার প্রয়োজনীয়তা হ্রাস করে।
এমপিডোনাদিও

2
লাইনে সেমিকোলন হারিয়েছে$first_term = array_shift($terms);
কেভিন সিজি

1

এই ফাংশনটি আমার পক্ষে কাজ করেছে:

/**
 * Return the term id for a given term name.
 */
function _get_tid_from_term_name($term_name) {
  $vocabulary = 'tags';
  $arr_terms = taxonomy_get_term_by_name($term_name, $vocabulary);
  if (!empty($arr_terms)) {
    $arr_terms = array_values($arr_terms);
    $tid = $arr_terms[0]->tid;
  }
  else {
    $vobj = taxonomy_vocabulary_machine_name_load($vocabulary);
    $term = new stdClass();
    $term->name = $term_name;
    $term->vid = $vobj->vid;
    taxonomy_term_save($term);
    $tid = $term->tid;
  }
  return $tid;
}

যদি আপনি অন্য শব্দভাণ্ডার (ট্যাগের চেয়ে আলাদা) ব্যবহার করে থাকেন তবে লাইনটির উপরের কোডটি সংশোধন করুন:

$vocabulary = 'tags';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.