কিভাবে একটি নোডের জন্য প্রোগ্রামিকভাবে একটি ট্যাক্সনোমি শব্দ সেট করবেন?


18

আমি শ্রমশক্তি শর্তাদি তৈরি করেছি এবং পদ রেফারেন্স ক্ষেত্রটি ব্যবহার করে এটি একটি নিবন্ধের ধরণের ' নিবন্ধ ' এ নিয়োগ করেছি assigned আমি প্রোগ্রামগতভাবে নোড তৈরি করেছি তবে নোডগুলির জন্য কীভাবে শৃঙ্খলাবদ্ধ শর্তাদি সেট করব?

বিভাগের শর্তাবলী ইতিমধ্যে তৈরি করা হয়েছে। আমি কোনও প্রোগ্রামের জন্য নোডের জন্য ট্যাক্সোনমি শব্দটি সেট করতে চাই ।

উত্তর:


17

টার্মনাম থেকে আইডি পেতে এই ফাংশনটি ব্যবহার করুন

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

আমি এর বহুমুখিতা (এটির অন্য অংশ) পছন্দ করি, সুতরাং এটি শব্দটি যুক্ত করে।
এডুয়ার্ডো চংককান

15

আপনি যখন প্রোগ্রামটিমে নোড তৈরি করেন, আপনি এটিকে যেকোন পদে নির্ধারণ করতে পারেন:

$node = new stdClass();
$node->type = 'YOUR_CONTENT_TYPE_NAME';
$node->title = 'title';

$node->language = LANGUAGE_NONE;
node_object_prepare($node);

//id of your taxonomy term
$tid = 1;

//add term to a node field
//field_yourfield_name - machine name of your term reference field

$node->field_yourfield_name[$node->language][0]['tid'] = $tid;
node_save($node);

1
@ neok.Thanks.Id শব্দটি ব্যবহার করে ভাল কাজ করে term তবে কীভাবে টার্মনেম সেট করবেন? এটি কি $ নোড-> ফিল্ড_ইউরফিল্ড_নাম [$ নোড-> ভাষা] এর মতো [0] ['নাম'] = $ পদ নাম;
রঞ্জানী

2
যেহেতু ড্রুপাল in তে ট্যাক্সনোমি আইডির পরিবর্তে ওয়ার্ডপোস্ট টার্মনেম ব্যবহার করে নোড (প্রগ্রেমেটিকভাবে) ট্যাগ করতে হয় কেউ জানেন?
রঞ্জানী

@ ব্যাখ্যা শর্তটি অবজেক্টটি পেতে ট্যাক্সনমি_জেট_মিটার_বাই_নামটি ব্যবহার করুন এবং তারপরে এই জোয়ারটি ব্যবহার করুন।
লি উডম্যান

2

এটি অর্জনের জন্য আপনি কিছু সত্তা মেটাডেটা মোড়ক ব্যবহার করতে পারেন , যেমন:

try {
  $w_node = entity_metadata_wrapper('node', $entity);
  $w_some_term = entity_metadata_wrapper('taxonomy_term', 1234);
  $w_node->field_term_ref = $w_some_term->tid->value();
  $w_node->save();
} catch (Exception $e) {
  drupal_set_message(t('Error for node: @title, message: @error.',
        array('@title' => $w_node->title->value(), '@error' => $e->getMessage())), 'error');
  watchdog_exception('foo', $e);
}

1
ইএমডাব্লু ব্যবহারের জন্য +1। তাদের একটি সহজ পদ্ধতি getIdentifier () রয়েছে, যা এর চেয়ে কম পদক্ষেপ $w_some_term->tid->value()। এখানে একটি দুর্দান্ত নিবন্ধ যা আমাকে এই ধারণাটি আরও ভালভাবে বুঝতে সাহায্য করেছে এবং EMWs ব্যবহার করার সময় আমি নিয়মিত উল্লেখ করি:
স্কটলফুল

1

শর্তাদি যুক্ত করার সময়, আমি খুঁজে পেলাম যে $ টার্ম-> প্যারেন্ট = অ্যারে (0) যোগ করার দরকার ছিল অন্যথায় ট্যাক্সোনমি_আপনি_পরিচয় টেবিলটি সঠিকভাবে আপডেট হয় না এবং শব্দের জন্য অ্যাডমিন তালিকা পৃষ্ঠায় শর্তাদি প্রদর্শিত হয় না

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