मुझे उसके नाम से टैक्सोनॉमी टर्म आईडी कैसे मिलेगी?


19

Taxonomy.module फ़ंक्शन की सूची में एकमात्र फ़ंक्शन ऐसा दिखता है जो ऐसा करता है कि मैं जो चाहता हूं वह एक निजी फ़ंक्शन ( _taxonomy_get_tid_from_term ) प्रतीत होता है ।

यदि मुझे पता है कि मुझे क्या उपयोग करना चाहिए, तो मुझे पता है कि टैक्सोनॉमी शब्द का नाम है और मुझे इसकी आईडी पता करने की आवश्यकता है?

जवाबों:


14

यह taxonomy_get_term_by_name () है जो आप निम्न कोड में उपयोग करते हैं।

$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
ऐसा लगता है कि मुझे TID के बजाय एक सरणी देनी है। $foo[0]->tidकुछ भी नहीं करता है क्योंकि यह TID के साथ बंद एक सरणी देता है। तो TID प्राप्त करने के लिए मुझे TID की आवश्यकता है, या foreach()एक आइटम पर केवल एक ही करने के लिए? अन्यथा:Undefined offset: 0
बेथ

3
यह एक सरणी देता है क्योंकि एक ही नाम के कई शब्दों को रोकने से कुछ नहीं होता है। आप यह नहीं जान सकते कि यह केवल एक आइटम है।
सुस्ती

2
@beth, या तो किसी विशेष शब्दावली को सीमित करने के लिए दूसरे पैरामीटर का उपयोग करें, या यह सुनिश्चित करने के लिए कि आपके पास सही है, के साथ लूप 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 में जोड़ा गया। यह परिणाम के माध्यम से लूप की आवश्यकता को समाप्त करता है ताकि आप जिस पद को चाहते हैं, वह उसी नाम को साझा करने वाले कई tids हो।
mpdonadio

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