私たちのものの多くはsite/taxonomy/XX
のような形式のURIを持っています。ここで、XXは整数です。
「名前からTIDを取得する方法」のような質問がたくさん見つかりましたが、TID
から名前を取得したいと思います。私はブレッドクラムスクリプトをまとめようとしていますが、「home > term
」のような証跡を取得している場合を除いて、すべてが素晴らしいです。代わりに、「home > <TERM NAME>
」のようにしたいと思います。
どうすればできますか?
Drupal 7を使用している場合、 taxonomy_term_load()
を使用できます
_$term = taxonomy_term_load($tid);
$name = $term->name;
_
一連の用語IDがある場合は、 taxonomy_term_load_multiple()
を使用して、ロードごとに1つのクエリを実行する必要をなくすことができます。
_$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のマルチロードオプションはありません。
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();
}
次の関数は、TIDに基づいて分類用語の名前を返します。
function get_term($tid) {
return db_select('taxonomy_term_data', 't')
->fields('t', array('name'))
->condition('tid', $tid)
->execute()
->fetchField();
}
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);
Drupal 8では、次の方法で用語の名前を取得できます。
//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);
//get the field name
$term->label();
//or
$term->get('name')->value;