Listar todos os termos de um vocabulário

25

Eu tenho uma taxonomia chamada serviços e quero listar todos os termos. Eu posso carregar o vocabulário com

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

mas não é possível visualizar todos os termos.

LeBlaireau
fonte
você pode escrever código detalhado?
precisa saber é o seguinte

Respostas:

43

Existem algumas maneiras, mas eu prefiro entity_load():

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

Você também pode usar:

Clive
fonte
Você pode explicar as vantagens de usar entity_load?
Niksmac #
3
@NikhilM São menos caracteres para digitar do taxonomy_term_load_multiple()que é por isso que eu pessoalmente prefiro. Usando taxonomy_get_tree()introduz níveis desnecessários de complexidade para as consultas envolvidas, a menos que você precisa especificamente os termos em sua hierarquia original (que OP não especificou)
Clive
Eu gosto, acho que a resposta abaixo é um pouco mais fácil de ler.
precisa saber é o seguinte
@welovedesign Realmente? Eu prefiro 2 linhas de mais de 6 mas preferência apenas pessoal :) Enquanto é menos de 80 caracteres que você ainda está aderindo a padrões de codificação do Drupal também
Clive
Meu +1 para o aderente a padrões de codificação do Drupal
niksmac
18

Eu gostaria de usar este código.

$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

niksmac
fonte
Se você possui um site multilíngue, isso não funciona como desejado. Se eu quero todos os termos, independentemente do idioma, isso não fornece resultados adequados. "taxonomy_get_tree" analisará os resultados com base no idioma. a resposta acima funciona para mim
Vaibhav Jain