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

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

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

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

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

22 голоса | спросил electblake 26 PMpTue, 26 Apr 2011 20:00:49 +040000Tuesday 2011, 20:00:49

7 ответов


31

На самом деле вы можете использовать:

$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
ответил Manu 16 Maypm11 2011, 20:34:45
10

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

drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load ("main_site_structure"); echo $ tax-> vid;'
ответил Robin van Emden 3 J0000006Europe/Moscow 2011, 16:06:53
1

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

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

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

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

ответил electblake 26 PMpTue, 26 Apr 2011 20:10:33 +040010Tuesday 2011, 20:10:33
1

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

ответил sumaiya 3 J000000Wednesday13 2013, 18:03:17
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 секунд.

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

ответил ryanka 19 32014vEurope/Moscow11bEurope/MoscowWed, 19 Nov 2014 20:59:10 +0300 2014, 20:59:10
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);
ответил Roy Segall 4 J000000Thursday13 2013, 00:23:02
0

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

  1. Подключитесь к своей базе данных с помощью команды Drush
    drush sqlc
  2. В командной строке mysql введите
    select * from taxonomy_vocabulary;
ответил peezy 16 Maypm16 2016, 17:32:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132