Listar todos los términos de un vocabulario

25

Tengo una taxonomía llamada servicios y quiero enumerar todos los términos. Puedo cargar el vocabulario con

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

pero no se puede ver para sacar todos los términos.

LeBlaireau
fuente
puedes escribir código detallado?
monymirza

Respuestas:

43

Hay algunas formas pero prefiero entity_load():

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

También puedes usar:

Clive
fuente
¿Puede explicar las ventajas de usar entity_load?
niksmac
3
@NikhilM Es menos caracteres para escribir taxonomy_term_load_multiple()que por eso personalmente lo prefiero. El uso taxonomy_get_tree()introduce niveles innecesarios de complejidad a las consultas involucradas, a menos que necesite específicamente los términos en su jerarquía original (que OP no especificó)
Clive
Me gusta, creo que la respuesta a continuación es un poco más fácil de leer.
LeBlaireau
@welovedesign ¿En serio? Prefiero 2 líneas sobre 6, pero eso es solo preferencia personal :) Siempre y cuando tenga menos de 80 caracteres, usted también se adhiere a los estándares de codificación de Drupal
Clive
Mi +1 por cumplir con los estándares de codificación de Drupal
niksmac
18

Me gustaría 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
fuente
Si tiene un sitio multilingüe, esto no funciona como se desea. Si quiero todos los términos, independientemente del idioma, esto no le dará los resultados adecuados. "taxonomy_get_tree" analizará los resultados en función del idioma. la respuesta anterior funciona para mí
Vaibhav Jain