Tid से taxonomy शब्द का नाम कैसे प्राप्त करें?


32

हमारे बहुत सारे सामान में यूरिस फॉर्मेट किया गया है site/taxonomy/XX, जहां XX एक पूर्णांक है।

मुझे " नाम से TID कैसे प्राप्त करें? " जैसे बहुत सारे प्रश्न मिले , लेकिन मैं इस नाम को प्राप्त करना चाहूंगा TID। मैं एक ब्रेडक्रम्ब स्क्रिप्ट को एक साथ रखने की कोशिश कर रहा हूं और इन मामलों को छोड़कर सब कुछ बहुत अच्छा है, जहां मुझे " home > term" जैसा निशान मिल रहा है । इसके बजाय मैं इसे " home > <TERM NAME>" करना चाहता हूं ।

ऐसा मैं किस प्रकार करूं?


शानदार जवाब। केवल जानकारी के लिए: जो लोग इसके विपरीत करना चाहते हैं - अर्थात शब्द के नाम से चिढ़ते हैं , उसके लिए एक प्रश्नोत्तर भी है: drupal.stackexchange.com/questions/36594/ ... आशा है कि उत्तर खोजने पर खोज इंजन के रूप में यह उपयोगी है। 'से' और 'से' के संदर्भ में किसी को क्या चाहिए, इसके आदेश को समझ में नहीं आता है।
थेरोबोक्नो

जवाबों:


92

यदि आप Drupal 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;
}

यदि आप Drupal 6 का उपयोग कर रहे हैं, तो आप इसका उपयोग कर सकते हैं taxonomy_get_term():

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

Drupal 6 के लिए कोई भी बहु-लोड विकल्प नहीं है जो मुझे दुर्भाग्य से पता है।


बहुत बहुत धन्यवाद मैं संस्करण समर्थन के लिए अतिरिक्त प्लस पा सकता हूं: डी
ब्रॉडी

अतिरिक्त सवाल: मुझे लगता है कि यह उसी तर्ज पर है, क्या इसे सेट करना बहुत आसान है इसलिए यूआरएल साइट / <शब्द का नाम> पढ़ें? या क्या मुझे प्रत्येक व्यक्तिगत पद के लिए सेट करना होगा?
Brodie

3
आप इसे टर्म-बाय-टर्म आधार पर कर सकते हैं, लेकिन यह काफी श्रमसाध्य है। Pathauto मॉड्यूल लिखा गया था सिर्फ स्थिति इस तरह की के लिए, आप इसे उपयोग कर सकते हैं संदर्भ / सामग्री / उपयोगकर्ताओं / आदि के लिए स्वत: सौंपे अन्य नामों पर पैटर्न को परिभाषित करने के।
क्लाइव

5

निम्न कार्य इसकी अवधि के आधार पर एक वर्गीकरण शब्द का नाम देता है:

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

1
जब आप API फ़ंक्शन के साथ एक ही चीज़ प्राप्त कर सकते हैं तो डेटाबेस फ़ंक्शंस का उपयोग करना उचित नहीं है।
कार्तगिस

4
कुछ मामलों में डेटाबेस फ़ंक्शन का उपयोग करना बेहतर होता है क्योंकि एपीआई फ़ंक्शन डेटा की एक बड़ी मात्रा को लोड करते हैं
हौमेम

यह भी उपयोगी है जब टैक्सोनॉमी एक्सेस अनुमति मॉड्यूल पहुंच को प्रतिबंधित करते हैं
डिमट्री

5

Drupal 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();
}

मुझे यह त्रुटि मिलती है - सूचना: अपरिभाषित संपत्ति: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

D7 के लिए:

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

    dpm($tid);  

  }  

D8 के लिए:

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

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