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


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.