Dans Drupal 6 j'irais dans la section taxonomie de mon/admin et je serais en mesure de trouver le $ vid (numérique) dans l'URL.
Dans Drupal 7 (sans doute en raison de l'introduction de termes en tant qu'entités), l'URL n'est plus aussi verbeuse (et certains diraient plus propre) car elle affiche maintenant le nom de la machine (nom du bundle?) du vocabulaire comme on peut le voir dans admin/structure/taxonomy/my_vocabulary/edit
.
Ma fin de partie consiste à utiliser taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) pour charger mon vocabulaire et travailler avec lui de manière glorieuse et abondante, mais hélas, cette fonction n'accepte pas un nom_machine, mais préfère vraisemblablement le $vid
.
J'accepte des alternatives pour charger un arbre de vocabulaire complet (c'est-à-dire tous les termes et leurs relations les uns avec les autres), mais je pense qu'il faut répondre directement à cette question pour les générations futures à Google.
En fait, vous pouvez utiliser:
$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
Après Manu, si vous avez un accès Drush en ligne de commande, vous pouvez faire:
drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load ("main_site_structure"); echo $ tax-> vid;'
Vous pouvez utiliser examiner manuellement le {taxonomy_vocabulary}
table dans la base de données, puis vérifiez la colonne vid
.
En D7
Si vous n'avez besoin que de l'ID de vocabulaire (vid) et que vous connaissez le nom de la machine, vous pouvez utiliser:
$query = db_select('taxonomy_vocabulary', 'tv');
$query->fields('tv', array('vid'));
$query->condition('tv.machine_name', __VOCAB_MACHINE_NAME, '=');
$result = $query->execute();
$data = $result->fetchAssoc();
$vid = $data['vid'];
Petite augmentation des performances: ~ 0,0036489963531494 secondes à ~ 0,00030779838562012 secondes.
Bien sûr, cela pourrait être adapté au besoin. Modifiez simplement la condition en fonction des informations dont vous disposez.
J'utilise entity_load () pour charger mon objet vocab et recevoir son $ vid.
L'astuce consiste à passer false
pour le 2ème paramètre (qui est $ids
), puis référencez le taxonomy_vocabulary
table dans votre base de données mysql pour voir ce que vous pouvez passer comme conditions. J'ai choisi d'utiliser le machine_name
comme vous pouvez le voir ci-dessous:
$ids = false;
$conditions = array('machine_name' => 'my_vocabulary');
$vocab = entity_load('taxonomy_vocabulary', $ids, $conditions);
Si vous connaissez un moyen plus rapide/plus léger, veuillez l'offrir ici:)
C'est à charger en utilisant la requête de champ d'entité comme mention bojan:
$query = new entityFieldQuery();
$result = $query
->entityCondition('entity_type', 'taxonomy_vocabulary')
->propertyCondition('machine_name', 'my_vocabulary')
->execute();
if (empty($result['taxonomy_vocabulary'])) {
return;
}
$vocabularies = taxonomy_vocabulary_load_multiple(array_keys($result['taxonomy_vocabulary']));
dpm($vocabularies);
C'était le moyen le plus rapide pour moi de voir une liste de tous les ID de vocabulaire via Drush:
drush sqlc
sélectionnez * dans taxonomy_vocabulary;