如何从TID获取分类学术语名称?


32

我们很多东西的uri格式如site/taxonomy/XX,其中XX是整数。

我发现了很多问题,例如“ 如何从名称中获取TID? ”,但是我想从中获取名称TID。我正在尝试将面包屑脚本放在一起,除这些情况下,如“ home > term” 外,一切都很好。相反,我想要像“ home > <TERM NAME>”这样的内容。

我该怎么办?


好答案。仅用于信息:对于那些想做相反的事情(例如,从术语名称中获得提示)的人,还要进行问答:drupal.stackexchange.com/questions/36594/…希望这对搜索引擎有帮助,在寻找答案时似乎不了解从“到”到“到”的需求顺序。
therobyouknow

Answers:


92

如果您使用的是Drupal 7,则可以使用 taxonomy_term_load()

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

如果您有很多术语ID,则可以使用以下命令节省对每个负载运行一个查询的费用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

另一个问题:我认为这很容易,设置它很容易,以便url读取site / <term name>吗?还是我必须为每个单独的学期设置?
布罗迪

3
您可以按期进行操作,但这很麻烦。该pathauto模块被写入只有在这种情况,你可以用它来定义模式来自动分配别名术语/内容/用户/等。
克莱夫(Clive)

5

以下函数根据其tid返回分类术语的名称:

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

1
当您可以通过API函数实现相同的功能时,建议不要使用数据库函数。
卡塔吉斯2015年

4
在某些情况下,最好使用数据库函数,因为API函数会加载大量数据
houmem 2015年

当分类访问权限模块限制访问时也很有用
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();
}

我收到此错误-注意:未定义的属性:Dr​​upal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.