TIDから分類用語名を取得する方法は?


32

私たちのものの多くはのような形式のURIを持っています。XX site/taxonomy/XXは整数です。

名前からTIDを取得する方法」のような多くの質問を見つけましたが、から名前を取得したいと思いTIDます。私はパンくずスクリプトを作成しようとしていますが、「home > term」のようなトレイルを取得している場合を除き、すべてが素晴らしいです。代わりに、「home > <TERM NAME>」のようにします。

どうすればできますか?


素晴らしい答え。情報のみ:反対のことをしたい人-つまり、用語名からtidを取得したい人のために、それに関するQ&Aもあります:drupal.stackexchange.com/questions/36594/…これは、答えを探すときに検索エンジンとして役立つことを願っています「from」と「to」の観点から必要なものの順序を理解していないようです。
-therobyouknow

回答:


92

Drupal 7を使用している場合は、使用できます taxonomy_term_load()

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

用語IDがたくさんある場合は、次のコマンドを使用して、ロードごとに1つのクエリを実行する必要を省くことができます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には複数ロードオプションはありません。


バージョンのサポートのために余分なプラスができたらいいのに、どうもありがとうございました:D
Brodie

追加の質問:同じ行に沿ってこれを考えると、urlsがsite / <term name>を読むように設定するのはかなり簡単ですか?または、個々の用語ごとに設定する必要がありますか?
ブロディ

3
用語ごとにそれを行うことができますが、それはかなり面倒です。自動エイリアス設定モジュールモジュールは、ちょうどこの種の状況のために書かれた、あなたは用語/コンテンツ/ユーザは/ etcに自動割り当てエイリアスにパターンを定義するためにそれを使用することができます。
クライブ

5

次の関数は、tidに基づいて分類用語の名前を返します。

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

1
API関数で同じことを達成できる場合は、データベース関数を使用することはお勧めできません。
カルタギス

4
API関数は大量のデータをロードするため、データベース関数を使用したほうが良い場合があります
-houmem

分類法のアクセス許可モジュールがアクセスを制限する場合にも役立ちます
-Dimetry

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
ダイアナ

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);  

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.