Liste tous les termes d'un vocabulaire

25

J'ai une taxonomie appelée services et je veux énumérer tous les termes. Je peux charger le vocabulaire avec

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

mais ne peut pas voir pour obtenir tous les termes.

LeBlaireau
la source
pouvez-vous écrire du code détaillé?
monymirza

Réponses:

43

Il y a plusieurs façons mais je préfère entity_load():

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

Vous pouvez également utiliser:

Clive
la source
Pouvez-vous expliquer les avantages de l'utilisation entity_load?
niksmac
3
@NikhilM C'est moins de caractères à taper que taxonomy_term_load_multiple()c'est pourquoi je le préfère personnellement. L'utilisation taxonomy_get_tree()introduit des niveaux de complexité inutiles dans les requêtes impliquées, à moins que vous n'ayez spécifiquement besoin des termes dans leur hiérarchie d'origine (ce que OP n'a pas spécifié)
Clive
J'aime ça, je pense que la réponse ci-dessous est un peu plus facile à lire.
LeBlaireau
@welovedesign Vraiment? Je préfère 2 lignes à 6, mais ce n'est qu'une préférence personnelle :) Tant qu'il fait moins de 80 caractères, vous adhérez toujours aux normes de codage de Drupal
Clive
Mon +1 pour l'adhésion aux normes de codage de Drupal
niksmac
18

Je voudrais utiliser ce code.

$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
la source
Si vous avez un site multilingue, cela ne fonctionne pas comme souhaité. Si je veux tous les termes, quelle que soit la langue, cela ne vous donne pas de bons résultats. "taxonomy_get_tree" analysera les résultats en fonction de la langue. la réponse ci-dessus fonctionne pour moi
Vaibhav Jain