Bagaimana cara saya mendapatkan ID istilah taksonomi dari namanya?


Jawaban:


14

Ini taxonomy_get_term_by_name () yang Anda gunakan seperti dalam kode berikut.

$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
Itu tampaknya memberi saya array daripada TID. $foo[0]->tidtidak melakukan apa-apa karena mengembalikan array yang dikunci dengan TIDs. Jadi untuk mendapatkan TID, saya perlu TID, atau melakukan foreach()meskipun hanya pada satu item? Kalau tidak:Undefined offset: 0
beth

3
Ini mengembalikan array karena tidak ada yang mencegah beberapa istilah memiliki nama yang sama. Anda tidak bisa tahu itu hanya satu item.
Letharion

2
@beth, gunakan parameter kedua untuk membatasi kosakata tertentu, atau lewati dengan foreach ($terms as $term)dan periksa $term->viduntuk memastikan Anda memiliki yang benar.
mpdonadio

Saya hanya dengan cepat mengetik dalam versi D6 yang biasa saya gunakan. Saya melihat sekarang dari tautan / url Anda termasuk bahwa Anda menjalankan D7. Komentar di atas harus menjelaskan hal-hal untuk Anda.
Jimajamma

22

taxonomy_get_term_by_name() akan melakukan trik:

$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
  $first_term = array_shift($terms);
  print $first_term->tid;
}

4
Ada juga argumen kedua yang ditambahkan ke Drupal 7 untuk membatasi ini pada kosa kata tertentu. Ini menghilangkan kebutuhan untuk mengulang melalui hasil untuk menemukan istilah yang Anda inginkan ketika Anda mungkin memiliki beberapa pasang yang berbagi nama yang sama.
mpdonadio

2
Tidak ada tanda titik koma di baris$first_term = array_shift($terms);
Kevin Siji

1

Fungsi ini berfungsi untuk saya:

/**
 * 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;
}

Jika Anda menggunakan kosakata lain (berbeda dari Tags), maka modifikasi dalam kode di atas baris:

$vocabulary = 'tags';
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.