Kelime kimliğini nerede bulabilirim ($ vid)?


24

Drupal 6'da / admin'in taksonomi bölümüne gidecektim ve URL'deki $ vid'i (sayısal) bulabilecektim.

Drupal 7'de (terimlerin varlık olarak kullanılmasından dolayı hiçbir şüphe yok) URL artık artık görülebildiği gibi sözcük dağarcığının makine adını (paket adı?) Gösterdiği gibi artık değil (ve bazıları daha temiz diyebilir). admin/structure/taxonomy/my_vocabulary/edit.

Son oyunum, kelime dağarcığımı yüklemek için taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) kullanmak ve bununla birlikte görkemli ve bol şekillerde çalışmak, ancak ne yazık ki bu işlev bir makine_adı kabul etmiyor, ancak muhtemelen sayısal olanı tercih ediyor $vid.

Tam bir kelime dağarcığı ağacı yüklemek için alternatifler kabul edeceğim (yani tüm terimler ve birbirleriyle olan ilişkileri), ancak sanırım bu sorunun doğrudan gelecek nesillerin google tarafından yanıtlanması gerektiğini düşünüyorum.


Sadece bir tahmin ama devel modülü?
Jeremy French,

Yanıtlar:



10

Manu'dan sonra, Drush access komut satırına sahipseniz, şunları yapabilirsiniz:

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

WOA, bir drush çözüm beklenen asla :) bu soruyu ve cevabı spicening (ve genişleyen) için teşekkürler
electblake

1

Kelime nesnemi yüklemek için entity_load () kullanıyorum ve $ vid aldım.

İşin püf noktası false, 2. parametrelere (ki $ids) girip taxonomy_vocabulary, mysql veritabanınızdaki tabloya referans olarak neyin geçebileceğini görmek için başvurmaktır. machine_nameAşağıda gördüğünüz gibi kullanmayı seçtim :

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

Daha hızlı ve daha hafif bir yol biliyorsanız, lütfen buradan teklif edin :)


1
EntityFieldQuery öğesini kullanın. $ koşullar kaldırılmıştır ve daha sınırlıdır.
Bojan Zivanovic

ve böylece onlar :) Tam bir cevap göndermek ister misiniz? Olmazsa, bu soruyu tamamlamak / kapatmak için buraya bir şey göndereceğim.
electblake

1

{taxonomy_vocabulary}Veritabanındaki tabloyu manuel olarak inceleyebilir ve sonra vidsütunu kontrol edebilirsiniz .


1

D7’de

İhtiyacınız olan tek şey kelime kimliği (vid) ve makine adını biliyorsanız, şunları kullanabilirsiniz:

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

Küçük performans artışı: ~ 0.0036489963531494 saniye ile ~ 0.00030779838562012 saniye

Bu, elbette, gerektiği gibi uyarlanabilir. Sadece durumu hangi bilgilere sahip olduğunla değiştir.


0

Bu, bojan'ın bahsettiği gibi varlık alanı sorgusunu kullanarak yüklenmek içindir:

$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

Bu, Drush aracılığıyla tüm kelime kimlik numaralarının bir listesini görmem için en hızlı yoldu:

  1. Drush komutuyla veritabanınıza bağlanın
    sarhoş sqlc
  2. MySQL isteminde yazın
    taxonomy_vocabulary'den * seçimini yapın;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.