Где найти идентификатор словаря ($ vid)?


24

В Drupal 6 я бы пошел в раздел таксономии моего / admin и смог бы найти $ vid (числовой) в URL.

В Drupal 7 (без сомнения, из-за введения терминов как сущностей) URL-адрес больше не является настолько многословным (а некоторые сказали бы, что он чище), так как теперь он показывает имя машины (имя пакета?) Словаря, как это можно увидеть в admin/structure/taxonomy/my_vocabulary/edit,

Моя конечная игра состоит в том, чтобы использовать taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities), чтобы загрузить мой словарь и работать с ним великолепно и в изобилии, но, увы, эта функция не принимает имя_компьютера, но, вероятно, предпочитает числовой $vid,

Я приму альтернативы для загрузки полного дерева слов (то есть всех терминов и их отношений друг с другом), но я думаю, что на этот вопрос нужно ответить непосредственно для будущих поколений в Google.


просто предположение, но модуль devel?
Джереми Френч

Ответы:



10

Следуя Ману, если у вас есть доступ к Drush из командной строки, вы можете сделать:

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

уау, никогда не ожидал, что решение для смазывания :) спасибо за то, что ответили (и расширили) этот вопрос и ответ
electblake

1

Я использую entity_load () для загрузки моего объекта Vocab и получения его $ vid.

Хитрость заключается в том, чтобы передать false2-ые параметры (которые есть $ids) и затем taxonomy_vocabularyобратиться к таблице в вашей базе данных mysql, чтобы увидеть, что вы можете передать как условия. Я решил использовать, machine_nameкак вы можете видеть ниже:

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

Если вы знаете более быстрый / легкий способ, пожалуйста, предложите его здесь :)


1
Используйте EntityFieldQuery. $ условия устарели и более ограничены.
Боян Живанович

и они такие :) Хотите отправить полный ответ? Если нет, я думаю, я отправлю что-то здесь, чтобы завершить / закрыть этот вопрос.
Electblake

1

Вы можете использовать вручную изучить {taxonomy_vocabulary}таблицу в базе данных, а затем проверить vidстолбец.


1

В D7

Если вам нужен только словарный идентификатор (vid) и вы знаете имя машины, вы можете использовать:

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

Небольшое увеличение производительности: от ~ 0,0036489963531494 секунд до ~ 0,00030779838562012 секунд.

Это, конечно, может быть адаптировано по мере необходимости. Просто измените условие на то, какая информация у вас есть.


0

Это для загрузки с использованием запроса поля сущности в качестве упоминания 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

Для меня это был самый быстрый способ увидеть список всех идентификаторов словаря через Drush:

  1. Подключитесь к вашей базе данных командой Drush
    Drush sqlc
  2. В приглашении mysql введите
    выберите * из словаря таксономии;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.