ฉันจะหารหัสคำศัพท์ ($ vid) ได้ที่ไหน


24

ใน Drupal 6 ฉันจะไปที่ส่วน taxonomy ของฉัน / admin และฉันจะสามารถหา $ vid (ตัวเลข) ใน URL

ใน Drupal 7 (ไม่ต้องสงสัยเลยว่าเนื่องจากคำศัพท์แนะนำเป็นเอนทิตี) URL จะไม่เป็น verbose อีกต่อไป (และบางคนก็บอกว่าสะอาดกว่า) เนื่องจากมันแสดงชื่อเครื่อง (ชื่อชุดรวม?) ของคำศัพท์ที่สามารถเห็นได้ในadmin/structure/taxonomy/my_vocabulary/edit.

เกมสุดท้ายของฉันคือการใช้taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities)เพื่อโหลดคำศัพท์ของฉันและทำงานกับมันด้วยวิธีที่รุ่งโรจน์และอุดมสมบูรณ์แต่ทว่าฟังก์ชั่นนี้ไม่ยอมรับชื่อ$vid.

ฉันจะยอมรับทางเลือกในการโหลดต้นไม้คำศัพท์เต็ม (เช่นทุกคำและความสัมพันธ์ของพวกเขากับแต่ละอื่น ๆ ) แต่ฉันคิดว่าคำถามนี้ควรตอบคำถามโดยตรงสำหรับคนรุ่นต่อไปในอนาคตของ Google


แค่โมดูลทาย แต่ devel?
Jeremy French

คำตอบ:



10

ต่อไปนี้มนุถ้าคุณมีบรรทัดคำสั่งการเข้าถึง Drush คุณสามารถทำได้:

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

woa ไม่เคยคาดหวังโซลูชัน drush :) ขอบคุณสำหรับการทำ spicening (และขยับขยาย) คำถามและคำตอบนี้
electblake

1

ฉันใช้entity_load ()เพื่อโหลดวัตถุคำศัพท์ของฉันและรับเป็น $ vid

เคล็ดลับคือการส่งผ่านfalseพารามิเตอร์ที่ 2 (ซึ่งคือ$ids) จากนั้นอ้างอิงtaxonomy_vocabularyตารางในฐานข้อมูล mysql ของคุณเพื่อดูว่าคุณสามารถส่งผ่านอะไรได้บ้างตามเงื่อนไข ฉันเลือกที่จะใช้สิ่งmachine_nameที่คุณเห็นด้านล่าง:

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

ถ้าคุณรู้วิธีที่เร็วกว่า / เบากว่านี้กรุณาให้ที่นี่ :)


1
ใช้ EntityFieldQuery ยกเลิกเงื่อนไข $ และ จำกัด มากขึ้น
Bojan Zivanovic

และดังนั้นพวกเขาคือ :) สนใจที่จะส่งคำตอบแบบเต็ม? ถ้าไม่ใช่ฉันคิดว่าฉันจะส่งบางอย่างที่นี่เพื่อให้เสร็จสมบูรณ์ / ปิดคำถามนี้
electblake

1

คุณสามารถใช้ตรวจสอบ{taxonomy_vocabulary}ตารางในฐานข้อมูลด้วยตนเองจากนั้นตรวจสอบvidคอลัมน์


1

ใน D7

หากสิ่งที่คุณต้องการคือ ID คำศัพท์ (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

นี่เป็นวิธีที่เร็วที่สุดสำหรับฉันในการดูรายการคำศัพท์ ID ทั้งหมดผ่าน Drush:

  1. เชื่อมต่อกับฐานข้อมูลของคุณด้วยคำสั่ง Drush
    sqlc เมา
  2. ที่พรอมต์ mysql ให้พิมพ์
    เลือก * จาก taxonomy_vocabulary;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.