জোয়ার থেকে ট্যাক্সনোমি শব্দটির নাম কীভাবে পাবেন?


32

আমাদের প্রচুর স্টাফের মতো ইউরিস ফর্ম্যাট করা আছে site/taxonomy/XXযেখানে XX একটি পূর্ণসংখ্যা।

" নাম থেকে টিআইডি কীভাবে পাবেন? " এর মতো অনেক প্রশ্ন পেয়েছি , তবে আমি নামটি থেকে নামটি পেতে চাই TID। আমি একটি ব্রেডক্র্যাম্ব স্ক্রিপ্ট একসাথে রাখার চেষ্টা করছি এবং এই ক্ষেত্রে যেখানে আমি " home > term" এর মতো ট্রেইল পাচ্ছি তা বাদ দিয়ে সবকিছু দুর্দান্ত । পরিবর্তে আমি এটি " home > <TERM NAME>" এর মতো রাখতে চাই ।

আমি কীভাবে এটি করতে পারি?


দুর্দান্ত উত্তর। কেবল তথ্যের জন্য: যারা বিপরীতে কাজ করতে চান - অর্থাত্ শব্দটি থেকে নামটি পান, তাদের পক্ষেও একটি প্রশ্নোত্তর রয়েছে: drupal.stackexchange.com/questions/36594/… আশা করি উত্তর অনুসন্ধানের সময় অনুসন্ধান ইঞ্জিন হিসাবে এটি সহায়ক Hope 'থেকে' এবং 'থেকে' পদটির ক্ষেত্রে কারটির প্রয়োজন তা ক্রম বুঝতে পারে বলে মনে হয় না।
থ্রোবায়ুয়ান

উত্তর:


92

আপনি যদি ড্রুপাল 7 ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন taxonomy_term_load()

$term = taxonomy_term_load($tid);
$name = $term->name;

যদি আপনার কাছে একাধিক টার্মের আইডি থাকে তবে আপনি প্রতিটি লোডের জন্য একটি একক ক্যোয়ারী চালিয়ে সংরক্ষণ করে তা ব্যবহার করে সংরক্ষণ করতে পারেন taxonomy_term_load_multiple():

$tids = array(1, 2, 3);
$terms = taxonomy_term_load_multiple($tids);

foreach ($terms as $term) {
  $name = $term->name;
}

আপনি যদি ড্রুপাল 6 ব্যবহার করে আটকে থাকেন তবে আপনি এটি ব্যবহার করতে পারেন taxonomy_get_term():

$term = taxonomy_get_term($tid);
$name = $term->name;

দুর্ভাগ্যজনকভাবে আমি জানি ড্রুপাল 6 এর জন্য কোনও মাল্টিপল-লোড বিকল্প নেই।


আপনাকে অনেক ধন্যবাদ আপনাকে সংস্করণ সমর্থনের জন্য অতিরিক্ত প্লাস করতে ইচ্ছুক: ডি
ব্রোডি

অতিরিক্ত প্রশ্ন: আমি মনে করি এটি একই লাইন বরাবর, ইউআরএলগুলি সাইট / <শব্দ নাম> পড়ার জন্য এটি সেট করা কি খুব সহজ? বা আমি প্রতিটি পৃথক মেয়াদে এটি সেট করতে হবে?
ব্রোডি 16

3
আপনি এটি একটি টার্ম-টু-টার্ম ভিত্তিতে করতে পারেন তবে এটি বেশ শ্রমসাধ্য। পাঠাটো মডিউলটি কেবল এই ধরণের পরিস্থিতির জন্যই রচিত হয়েছিল, আপনি শর্তাদি / সামগ্রী / ব্যবহারকারী / ইত্যাদিতে স্বতঃ- নিয়োগের উপকরণগুলি নিদর্শনগুলি সংজ্ঞায়িত করতে এটি ব্যবহার করতে পারেন।
ক্লাইভ

5

নিম্নলিখিত ফাংশনটি তার জোয়ারের উপর ভিত্তি করে একটি ট্যাক্সনোমির শব্দটির নাম দেয়:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}

1
আপনি যখন কোনও API ফাংশন দিয়ে একই জিনিস অর্জন করতে পারেন তখন ডাটাবেস ফাংশনগুলি ব্যবহার করা ভাল নয়।
কারতাগিস

4
কোনও ক্ষেত্রে এটি ডাটাবেস ফাংশনটি ব্যবহার করা আরও ভাল কারণ API ফাংশনগুলি একটি বিশাল পরিমাণের ডেটা লোড করে
হুমমে


5

ড্রুপাল 8 এ, আপনি এইভাবে ট্যাক্সনোমির পদগুলির নাম পেতে পারেন:

$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);

$name = $term->label();

বা একাধিক লোড করতে:

$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple($tids);

foreach($terms as $term) {
  $name = $term->label();
}

আমি এই ত্রুটিটি পেয়েছি - বিজ্ঞপ্তি: অপরিশোধিত সম্পত্তি: ড্রুপাল ore কোর \ সত্তা \ প্লাগইন \ ডেটাটাইপ \ সত্তা রেফারেন্স :: $ লক্ষ্য
ডায়ানা

1

ডি 7 এর জন্য:

$term = taxonomy_get_term_by_name($term_name, $vocab_name);  
  foreach($term as $key => $data) {  
    $tid = $data->tid;  

    dpm($tid);  

  }  

ডি 8 এর জন্য:

$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;  
dpm($term_name);  

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