Taksonomi terim adını tid'den nasıl alabilirim?


32

Pek çok şeyimiz site/taxonomy/XX, XX'nin bir tamsayı olduğu gibi , uris biçiminde biçimlendirilmiş .

" Addan TID nasıl alınır? " Gibi birçok soru buldum , ancak adı almak istiyorum TID. Bir ekmek kırıntısı betiği hazırlamaya çalışıyorum ve " home > term" gibi bir iz bulmaya başladığım durumlar dışında her şey harika . Bunun yerine " home > <TERM NAME>" gibi olmasını istiyorum .

Bunu nasıl yapabilirim?


Harika cevaplar. Sadece bilgi amaçlı: Tersini yapmak isteyenler için - yani terim adından daha fazla bilgi almak için de bir soru-cevap var: drupal.stackexchange.com/questions/36594/… Cevaplar ararken bunun Arama Motorları olarak faydalı olacağını umuyorum İhtiyaç duydukları şeyin sırasını 'dan' ve 'dan' anlamış gibi görünmüyor.
therobyouknow

Yanıtlar:


92

Drupal 7 kullanıyorsanız kullanabilirsiniz taxonomy_term_load()

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

Eğer bir sürü terim kimliğiniz varsa, aşağıdakileri kullanarak her yük için tek bir sorgu yapmak zorunda kalmadan tasarruf edebilirsiniz taxonomy_term_load_multiple():

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

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

Drupal 6'yı kullanıyorsanız, aşağıdakileri kullanabilirsiniz taxonomy_get_term():

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

Drupal 6 için ne yazık ki bildiğim çoklu yükleme seçeneği mevcut değil.


sürüm desteği için fazladan artı yapabilmeyi çok teşekkür ederim: D
Brodie

ek soru: Sanırım bu aynı satırlar boyunca, URL'lerin site / <terim adı> okuyacak şekilde ayarlamak oldukça kolay mı? ya da bunu her bir terim için mi ayarlamalıyım?
Brodie

3
Bunu dönem bazında yapabilirsiniz, ancak bu oldukça zahmetlidir. OtoYol'un modülü sadece durumun bu tür için, sen vb terimleri / content / kullanıcılara / için Otomatik atama takma adlarına desenleri tanımlamak için kullanabilirsiniz yazılmıştır.
Clive

5

Aşağıdaki fonksiyon tidine dayalı bir taksonomi teriminin adını döndürür:

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

1
Bir API işleviyle aynı şeyi başarabildiğiniz zaman veritabanı işlevlerini kullanmanız önerilmez.
Kartagis

4
Bazı durumlarda, veritabanı işlevlerini kullanmak daha iyidir, çünkü API işlevleri büyük miktarda veri
yükler

Taksonomi erişim izni modülleri erişimi kısıtladığında da yararlıdır
Dimetry

5

Drupal 8’de, bu şekilde taksonomi terimlerinin adını alabilirsiniz:

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

$name = $term->label();

Veya çoklu yüklemek için:

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

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

Bu hatayı alıyorum - Notice: Undefined property: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

D7 için:

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

    dpm($tid);  

  }  

D8 için:

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

0

Drupal 8'deki terimin adını aşağıdaki şekilde elde etmek mümkündür:

//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);

//get the field name
$term->label();

//or
$term->get('name')->value;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.