नोड के लिए प्रोग्रामेटिक रूप से एक टैक्सोनॉमी शब्द कैसे सेट करें?


18

मैंने टैक्सोनॉमी शब्द बनाए और इसे टर्म संदर्भ क्षेत्र का उपयोग करके सामग्री प्रकार ' आर्टिकल ' में सौंपा । मैंने प्रोग्रामेटिक रूप से नोड्स बनाए लेकिन नोड्स के लिए टैक्सोनॉमी शब्द कैसे सेट करें?

वर्गीकरण की शर्तें पहले से ही बनाई गई हैं। मैं एक नोड प्रोग्राम के लिए टैक्सोनॉमी शब्द सेट करना चाहता हूं ।

जवाबों:


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. यह शब्द आईडी का उपयोग करके अच्छी तरह से काम करता है।लेकिन कैसे टर्मिनलों को सेट करें? क्या वह $ नोड की तरह है-> field_yourfield_name [$ नोड-> भाषा] [0] ['नाम'] = दूसरा शब्द;
रंजनी

2
किसी को पता है कि drupal 7 में taxonomy id के बजाय taxonomy termname का उपयोग करके नोड (प्रोग्रामिक रूप से) टैग कैसे करें?
रंजनी

@pretty शब्द ऑब्जेक्ट प्राप्त करने के लिए taxonomy_get_term_by_name का उपयोग करें और फिर tid का उपयोग करें।
ली वुडमैन

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
EMWs का उपयोग करने के लिए +1। उनके पास एक आसान तरीका getIdentifier () भी है, जो की तुलना में एक कम कदम है $w_some_term->tid->value()। यहाँ एक है महान लेख : कि मदद मुझे इस अवधारणा को इतना बेहतर समझते हैं, और जो करने के लिए मैं नियमित रूप से उल्लेख जब EMWs का उपयोग कर
scotself

1

शर्तें जोड़ते समय, मैंने पाया कि मुझे $ टर्म-> पैरेंट = ऐरे (0) जोड़ने की जरूरत है अन्यथा टैक्सोनॉमी_टरम_हियरार्की टेबल ठीक से अपडेट नहीं है, और शब्द उस शब्दावली के लिए एडमिन लिस्ट पेज में नहीं दिखते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.