it-swarm.it

Dove trovo l'ID del vocabolario ($ vid)?

In Drupal 6 andrei nella sezione tassonomia del mio/admin e sarei in grado di trovare $ vid (numerico) nell'URL.

In Drupal 7 (senza dubbio a causa dell'introduzione di termini come entità) l'URL non è più così dettagliato (e alcuni direbbero più pulito) in quanto ora mostra il nome della macchina (nome del bundle?) del vocabolario come può essere visto in admin/structure/taxonomy/my_vocabulary/edit.

Il mio fine del gioco è usare taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) per caricare il mio vocabolario e lavorare con esso in modi gloriosi e abbondanti, ma purtroppo questa funzione non accetta un nome_macchina ma presumibilmente preferisce il valore numerico $vid.

Accetterò alternative per caricare un albero di vocabolario completo (vale a dire tutti i termini e le loro relazioni reciproche), ma penso che questa domanda dovrebbe ricevere una risposta diretta su Google per le generazioni future.

23
electblake

In realtà puoi usare:

$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
33
Manu

Seguendo Manu, se si dispone dell'accesso Drush da riga di comando, è possibile:

drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load ("main_site_structure"); echo $ tax-> vid;'
10
Robin van Emden

Puoi usare manualmente esaminare il {taxonomy_vocabulary} tabella nel database, quindi controllare la colonna vid.

1
sumaiya

In D7

Se tutto ciò di cui hai bisogno è l'ID del vocabolario (vid) e conosci il nome della macchina, puoi usare:

$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'];

Piccolo aumento delle prestazioni: da ~ 0,0036489963531494 secondi a ~ 0.00030779838562012 secondi.

Questo, ovviamente, potrebbe essere personalizzato in base alle esigenze. Cambia la condizione in base alle informazioni che hai.

1
ryanka

Sto usando entity_load () per caricare il mio oggetto vocab e ricevere $ vid.

Il trucco è passare false per il 2o parametro (che è $ids) e quindi fare riferimento a taxonomy_vocabulary tabella nel tuo database mysql per vedere cosa puoi passare come condizioni. Ho scelto di usare il machine_name come puoi vedere di seguito:

$ids = false;
$conditions = array('machine_name' => 'my_vocabulary');
$vocab = entity_load('taxonomy_vocabulary', $ids, $conditions);

Se conosci un modo più rapido/leggero, ti preghiamo di offrirlo qui:)

1
electblake

Questo per caricare usando la query del campo entità come menzione 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);
0
Roy Segall

Questo è stato il modo più veloce per me di visualizzare un elenco di tutti gli ID del vocabolario tramite Drush:

  1. Connettiti al tuo database con il comando Drush
    drush sqlc
  2. Al prompt mysql, digitare
    seleziona * da taxonomy_vocabulary;
0
peezy