列出词汇表中的所有术语


25

我有一个称为服务的分类法,想要列出所有条款。我可以用

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

但看不出所有条款。


你能写详细的代码吗?
monymirza

Answers:


43

有几种方法,但我更喜欢entity_load()

$vocabulary = taxonomy_vocabulary_machine_name_load('Services');
$terms = entity_load('taxonomy_term', FALSE, array('vid' => $vocabulary->vid));

您还可以使用:


你能解释一下使用的好处entity_load吗?
niksmac

3
@NikhilM键入的字符少了taxonomy_term_load_multiple(),所以我个人更喜欢它。使用taxonomy_get_tree()会给所涉及的查询带来不必要的复杂性,除非您特别需要其原始层次结构中的术语(OP未指定)
Clive

我喜欢它,但是我认为下面的答案更容易阅读。
LeBlaireau

@welovedesign真的吗?我喜欢2行而不是6行,但这只是个人喜好:)只要字符数不超过80个,您仍将遵守Drupal的编码标准
Clive

我的+1符合Drupal的编码标准
niksmac

18

我想使用此代码。

$name = 'YOUR_VOCAB_NAME';
$myvoc = taxonomy_vocabulary_machine_name_load($name);
$tree = taxonomy_get_tree($myvoc->vid);
foreach ($tree as $term) {
 echo $term->tid;
}

taxonomy_vocabulary_machine_name_load

taxonomy_get_tree


如果您有一个多语言站点,则无法正常运行。如果我要所有术语,无论使用哪种语言,都不会给您适当的结果。“ taxonomy_get_tree”将根据语言解析结果。上面的答案对我
有用
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.