Де я можу знайти ідентифікатор словника ($ vid)?


24

У Drupal 6 я би перейшов до розділу систематики свого / адміністратора і зможу знайти $ vid (числовий) у URL-адресі.

У Drupal 7 (без сумніву, через введення термінів як сутності) URL-адреса вже не є багатослівною (а дехто би сказав чистішою), як тепер показує назву машини (ім'я в'язки?) Словника, як це можна побачити в admin/structure/taxonomy/my_vocabulary/edit.

Моя кінцева гра полягає у використанні таксономії_get_tree ($ vid, $ батько, $ max_depth, $ load_entities) для завантаження мого словника, і робота з ним славними і рясними способами, але, на жаль, ця функція не приймає ім'я машини, але, мабуть, віддає перевагу числовому $vid.

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


просто здогадка, але розроблений модуль?
Джеремі Френч

Відповіді:



10

Слідом за Ману, якщо у вас є командний рядок Друкований доступ, ви можете зробити:

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

Вау, ніколи не очікував рішення про ударну :) спасибі за спринцювання (та розширення) цього питання та відповіді
electblake

1

Я використовую entit_load () для завантаження свого об'єкта vocab і отримую це $ vid.

Трюк полягає в тому, щоб перейти falseна другий параметр (який є $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 введіть
    виберіть * з таксономії_vocabulary;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.