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.


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:


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.