it-swarm-eu.dev

Kde najdu ID slovníku ($ vid)?

V Drupal 6) bych šel do sekce taxonomie mého/administrátora a v URL bych mohl najít $ vid (numerický).

V Drupal 7 (bezpochyby kvůli zavedení termínů jako entit) již URL není tak podrobná (a někteří by řekli čistší), protože nyní zobrazuje název počítače (název svazku?) slovní zásoby, jak je vidět v admin/structure/taxonomy/my_vocabulary/edit.

Moje koncová hra je použít taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) načíst moji slovní zásobu a pracovat s ní slavnými a hojnými způsoby, ale bohužel tato funkce nepřijímá machine_name, ale pravděpodobně dává přednost číselné $vid.

Budu přijímat alternativy k načtení celého stromu slovníku (tj. Všech termínů a jejich vztahů k sobě navzájem), ale domnívám se, že tato otázka by měla být zodpovězena přímo pro budoucí generace Googlu.

24
electblake

Ve skutečnosti můžete použít:

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

Po Manu, pokud máte přístup z příkazového řádku Drush, můžete:

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

Můžete použít ručně prozkoumat tabulku {taxonomy_vocabulary} V databázi a zkontrolovat sloupec vid.

1
sumaiya

V D7

Pokud potřebujete pouze ID slovníku (vid) a znáte název počítače, můžete použít:

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

Malé zvýšení výkonu: ~ 0,0036489963531494 sekund na ~ 0,00030779838562012 sekund.

To by samozřejmě mohlo být přizpůsobeno podle potřeby. Prostě změňte podmínku na informace, které máte.

1
ryanka

Používám entity_load () k načtení mého objektu vocab a získám $ vid.

Trik spočívá v předání false pro 2. parametry (což je $ids) a poté odkazujte na taxonomy_vocabulary tabulka ve vaší databázi mysql, abyste zjistili, co můžete předat jako podmínky. Rozhodl jsem se použít machine_name jak vidíte níže:

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

Pokud víte o rychlejším/lehčím způsobu, pak to prosím nabídněte zde:)

1
electblake

Toto je načteno pomocí dotazu na pole entity, jak se zmínil o 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

To byl pro mě nejrychlejší způsob, jak zobrazit seznam všech slovíček ID prostřednictvím Drush:

  1. Připojte se k databázi pomocí příkazu Drush
    drush sqlc
  2. Na výzvu mysql zadejte
    vyberte * z taxonomy_vocabulary;
0
peezy