web-gelistirme-sc.com

Kelime kimliğini ($ vid) nerede bulabilirim?

Drupal 6 içinde/admin'imin sınıflandırma bölümüne giderdim ve URL'de $ vid (sayısal) bulabilirdim.

Drupal 7'de (terimlerin varlık olarak kullanılmasından dolayı şüphe yok) URL artık makine adını (paket adı?) Gösterdiği için ayrıntılı değil (ve bazıları daha temiz diyebilir). kelime hazinesi admin/structure/taxonomy/my_vocabulary/edit.

Benim oyunum taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) kelime dağarcığımı yüklemek ve onunla şanlı ve bol yollarla çalışmaktır, ancak ne yazık ki bu işlev kabul etmez bir makine_adı ancak büyük olasılıkla sayısal $vid.

Tam bir kelime ağacı yüklemek için alternatifleri kabul edeceğim (yani, tüm terimler ve birbirleriyle olan ilişkileri), ancak bu sorunun doğrudan gelecek nesiller için Google'a cevaplanması gerektiğini düşünüyorum.

23
electblake

Aslında şunları kullanabilirsiniz:

$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
33
Manu

Manu'dan sonra Drush access komut satırınız varsa şunları yapabilirsiniz:

drush php-eval '$ tax = taksonomi_vokabulary_makine_adı_load ("main_site_sttruc"); echo $ tax-> vid;'
10
Robin van Emden

{taxonomy_vocabulary} tablosunu seçin ve ardından vid sütununu kontrol edin.

1
sumaiya

D7'de

İhtiyacınız olan tek şey kelime kimliği (vid) ise ve makine adını biliyorsanız, aşağıdakileri 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 ila ~ 0.00030779838562012 saniye.

Bu elbette gerektiği gibi uyarlanabilir. Sadece koşulu sahip olduğunuz bilgilere değiştirin.

1
ryanka

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

İşin püf noktası 2. parametreler için false iletmektir (ki $ids) ve ardından taxonomy_vocabulary tabloyu mysql veritabanınızda koşul olarak neler iletebileceğinizi görmek için. machine_name aşağıda gördüğünüz gibi:

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

Daha hızlı/daha hafif bir yol biliyorsanız, lütfen burada sunun:)

1
electblake

Bu, varlık alanı sorgusunu bojan söz konusu olarak yüklemek 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
Roy Segall

Drush aracılığıyla tüm kelime kimlikleri listesini görmem için en hızlı yol buydu:

  1. Drush komutuyla veritabanınıza bağlanın
    sarhoş sqlc
  2. MySQL istemine Yazın
    taxonomy_vocabulary'den * seçin;
0
peezy