Di mana saya menemukan ID kosa kata ($ vid)?

24

Dalam Drupal 6 saya akan pergi ke bagian taksonomi dari admin saya dan saya akan dapat menemukan $ vid (numerik) di URL.

Dalam Drupal 7 (tidak diragukan lagi karena pengenalan istilah sebagai entitas) URL tidak lagi sebagai verbose (dan beberapa orang akan mengatakan lebih bersih) karena sekarang menunjukkan nama mesin (nama bundel?) Dari kosa kata seperti yang dapat dilihat pada admin/structure/taxonomy/my_vocabulary/edit.

Akhir permainan saya adalah menggunakan taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) untuk memuat kosa kata saya, dan bekerja dengannya dengan cara yang mulia dan berlimpah, tetapi sayangnya fungsi ini tidak menerima nama mesin tetapi mungkin lebih suka angka tersebut $vid.

Saya akan menerima alternatif untuk memuat pohon kosakata penuh (yaitu semua istilah dan hubungan mereka satu sama lain), tetapi saya pikir pertanyaan ini harus dijawab secara langsung untuk generasi mendatang ke google.

electblake
sumber
hanya menebak tapi mengembangkan modul?
Jeremy French

Jawaban:

10

Mengikuti Manu, jika Anda memiliki akses Drush baris perintah, Anda dapat melakukannya:

drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load ("main_site_structure"); echo $ tax-> vid;'
Robin van Emden
sumber
woa, tidak pernah mengharapkan solusi drush :) terima kasih untuk spicening (dan pelebaran) pertanyaan & jawaban ini
electblake
1

Saya menggunakan entitas_load () untuk memuat objek vocab saya, dan menerima $ vid.

Caranya adalah dengan falsememasukkan parameter ke-2 (yaitu $ids) dan kemudian merujuk taxonomy_vocabularytabel di database mysql Anda untuk melihat apa yang dapat Anda lewati sebagai kondisi. Saya memilih untuk menggunakan machine_nameseperti yang Anda lihat di bawah:

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

Jika Anda mengetahui cara yang lebih cepat / lebih ringan, silakan tawarkan di sini :)

electblake
sumber
1
Gunakan EntityFieldQuery. $ ketentuan sudah usang, dan lebih terbatas.
Bojan Zivanovic
dan begitu mereka :) Mau mengirimkan jawaban lengkap? Jika tidak, saya kira saya akan mengirimkan sesuatu di sini untuk melengkapi / menutup pertanyaan ini.
electblake
1

Anda dapat menggunakan memeriksa {taxonomy_vocabulary}tabel secara manual dalam database, dan kemudian memeriksa vidkolom.

sumaiya
sumber
1

Dalam D7

Jika yang Anda butuhkan adalah ID kosakata (vid) dan Anda tahu nama mesin, Anda dapat menggunakan:

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

Peningkatan kinerja kecil: ~ 0,0036489963531494 detik menjadi ~ 0,00030779838562012 detik.

Ini, tentu saja, dapat disesuaikan sesuai kebutuhan. Ubah saja kondisinya menjadi informasi apa yang Anda miliki.

ryanka
sumber
0

Ini untuk memuat menggunakan kueri bidang entitas seperti yang disebutkan 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
sumber
0

Ini adalah cara tercepat bagi saya untuk melihat daftar semua ID kosakata melalui Drush:

  1. Terhubung ke database Anda dengan perintah Drush
    sqlc drush
  2. Pada prompt mysql, ketik
    pilih * dari taxonomy_vocabulary;
peezy
sumber