Bagaimana cara mendapatkan istilah taksonomi dari tid?


32

Banyak barang-barang kami telah diformat seperti uris site/taxonomy/XX, di mana XX adalah bilangan bulat.

Saya menemukan banyak pertanyaan seperti " bagaimana cara mendapatkan TID dari namanya? ", Tetapi saya ingin mendapatkan namanya dari TID. Saya mencoba menyusun skrip remah roti dan semuanya bagus kecuali untuk kasus ini di mana saya mendapatkan jejak seperti " home > term". Sebaliknya saya ingin memilikinya seperti " home > <TERM NAME>".

Bagaimana saya bisa melakukannya?


Jawaban yang bagus Hanya untuk info: Bagi mereka yang ingin melakukan yang sebaliknya - yaitu mendapatkan tid dari nama panjang, ada juga T&J untuk itu: drupal.stackexchange.com/questions/36594/... Semoga ini berguna sebagai Mesin Pencari ketika mencari jawaban tampaknya tidak memahami urutan apa yang dibutuhkan seseorang dalam hal 'dari' dan 'ke'.
therobyouknow

Jawaban:


92

Jika Anda menggunakan Drupal 7, Anda dapat menggunakannya taxonomy_term_load()

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

Jika Anda memiliki banyak ID istilah, Anda dapat menyimpannya dengan menjalankan satu permintaan untuk setiap pemuatan dengan menggunakan taxonomy_term_load_multiple():

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

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

Jika Anda terjebak menggunakan Drupal 6, Anda dapat menggunakan taxonomy_get_term():

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

Tidak ada opsi multi-load untuk Drupal 6 yang saya tahu sayangnya.


terima kasih banyak berharap saya dapat tambahan plus untuk dukungan versi: D
Brodie

pertanyaan tambahan: Saya kira ini sejalan, apakah cukup mudah untuk mengaturnya sehingga url membaca situs / <nama jangka>? atau apakah saya harus mengatur itu untuk setiap istilah individu?
Brodie

3
Anda dapat melakukannya berdasarkan jangka per periode tetapi itu cukup melelahkan. The Modul pathauto ditulis hanya untuk situasi semacam ini, Anda dapat menggunakannya untuk menentukan pola untuk alias auto-assign ke hal / konten / pengguna / etc.
Clive

5

Fungsi berikut mengembalikan nama istilah taksonomi berdasarkan pada tid:

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

1
Tidak disarankan menggunakan fungsi basis data saat Anda dapat mencapai hal yang sama dengan fungsi API.
Kartagis

4
Dalam beberapa kasus, lebih baik menggunakan fungsi basis data karena fungsi API memuat data dalam jumlah besar
houmem

Juga berguna ketika modul izin akses taksonomi membatasi akses
Dimetry

5

Di Drupal 8, Anda bisa mendapatkan nama istilah taksonomi dengan cara ini:

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

$name = $term->label();

Atau memuat beberapa:

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

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

Saya mendapatkan kesalahan ini - Pemberitahuan: Properti tidak terdefinisi: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

Untuk D7:

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

    dpm($tid);  

  }  

Untuk D8:

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

0

Dimungkinkan untuk mendapatkan nama istilah di Drupal 8 dengan cara berikut:

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

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

//or
$term->get('name')->value;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.