ฉันกำลังใช้ ดูเมนูข้าม ด้วย Drupal 9
โหนดถูกแท็กด้วย a ซอฟต์แวร์_เวอร์ชัน
อนุกรมวิธานลำดับชั้นตามรูปแบบนี้:
âââ ฟู
â âââ 0.1.0
€ 0.2.0
âââ บาร์
€ 0.3.0
â âââ 0.3.1
€ 0.4.0
âââ บาซ
âââ 0.1.0
âââ 0.2.0
âââ 0.3.0
แผนมีไว้สำหรับโหนดของประเภทเนื้อหาที่กำหนดเองที่จะติดแท็กด้วยคำย่อยจากรายการด้านบน (ค่าตัวเลข) โดยสร้างรายการข้ามที่มีเฉพาะโหนดที่ติดแท็กด้วยคำที่เป็นพี่น้องซึ่งใช้พาเรนต์เดียวกัน (กล่าวคือ เฉพาะเอกสารประกอบ หน้าสำหรับเวอร์ชันต่างๆ ของซอฟต์แวร์เดียวกัน)
ภายใต้ /admin/structure/views/view/taxonomy_jump_menu/edit
มีการแสดงบล็อกของมุมมองซึ่งปัจจุบันส่งคืนคำศัพท์อนุกรมวิธานทั้งหมดพร้อมกับผู้ปกครองและเด็กทั้งหมด กล่าวอีกนัยหนึ่ง เมนูทางข้ามจะลิงก์ไปยังเอกสารประกอบสำหรับทุกเวอร์ชันของซอฟต์แวร์ที่แตกต่างกันทั้งหมด
ฉันหวังว่าจะมีวิธีใน Views เพื่อเพิ่ม Contextual Filter ซึ่งสามารถระบุ TID ของอนุกรมวิธานของโหนดปัจจุบันจาก URL ใช้สิ่งนั้นเพื่อกำหนด TID หลักทันทีของ TID (ซึ่งควรจะมีเพียงอันเดียว) และสร้างเมนูข้ามที่มีรายการย่อยทั้งหมดของ TID พาเรนต์ ยกเว้นเทอมพาเรนต์เอง
การกำหนดค่าสำหรับมุมมองนี้คือ YAML หลายร้อยบรรทัด แต่นี่คือข้อความที่ตัดตอนมา (โดยลบบรรทัดที่ไม่เกี่ยวข้องหลายบรรทัด แต่คงการเยื้องไว้):
การพึ่งพา:
การกำหนดค่า:
- taxonomy.vocabulary.software_version
โมดูล:
- อนุกรมวิธาน
- ผู้ใช้
- view_jump_menu
รหัส: taxonomy_jump_menu
ป้ายกำกับ: 'เมนูกระโดดอนุกรมวิธาน'
โมดูล: มุมมอง
คำอธิบาย: ''
แท็ก: ''
base_table: taxonomy_term_field_data
base_field: เสมอ
แสดง:
ค่าเริ่มต้น:
display_options:
แบบสอบถาม:
พิมพ์: views_query
สไตล์:
พิมพ์: jump_menu
แถว:
ประเภท: เขตข้อมูล
เขตข้อมูล:
parent_target_id:
รหัสหลัก: parent_target_id
ตาราง: taxonomy_term__parent
ฟิลด์: parent_target_id
ความสัมพันธ์ : ไม่มี
group_type: กลุ่ม
ไม่รวม: จริง
น้ำ:
id : ติ๊ด
ตาราง: taxonomy_term_field_data
สนาม: น้ำขึ้นน้ำลง
ความสัมพันธ์ : ไม่มี
group_type: กลุ่ม
ไม่รวม: เท็จ
แก้ไข:
alter_text: จริง
ข้อความ: '/taxonomy/term/{{ tid }}'
ชื่อ:
รหัส: ชื่อ
ตาราง: taxonomy_term_field_data
ฟิลด์: ชื่อ
ความสัมพันธ์ : ไม่มี
group_type: กลุ่ม
ไม่รวม: เท็จ
ตัวกรอง:
สถานะ:
ค่า: '1'
ตาราง: taxonomy_term_field_data
ฟิลด์: สถานะ
plugin_id: บูลีน
ประเภทเอนทิตี: taxonomy_term
entity_field: สถานะ
รหัส: สถานะ
เปิดเผย:
ตัวดำเนินการ: ''
operation_limit_selection: เท็จ
operation_list: { }
กลุ่ม: 1
วิดีโอ:
รหัส: วีดีโอ
ตาราง: taxonomy_term_field_data
สนาม: วิดีโอ
ค่า:
software_version: ซอฟต์แวร์เวอร์ชัน
ประเภทเอนทิตี: taxonomy_term
entity_field: วีดีโอ
plugin_id: บันเดิล
เปิดเผย:
operation_limit_selection: เท็จ
operation_list: { }
กลุ่ม: 1
ประเภท: { }
ชื่อเรื่อง: 'เมนูกระโดดอนุกรมวิธาน'
ความสัมพันธ์: { }
อาร์กิวเมนต์: { }
filter_groups:
โอเปอเรเตอร์: AND
กลุ่ม:
1: และ
มีที่มาอีกมากมาย แต่ฉันพยายามรวมเฉพาะรายละเอียดที่สำคัญเท่านั้น!
ฉันไม่คิดว่าคำถามนี้มีคำตอบที่ซ้ำกันในฟอรัมนี้ ใกล้เคียงที่สุดที่ฉันได้พบคือ คำถามนี้ ซึ่งเกี่ยวข้องกับเมนูมากกว่าอนุกรมวิธาน (แม้ว่าปัญหาของฉันคือฉันควรใช้เมนูอนุกรมวิธานที่นี่) และ คำถามที่ไม่ได้รับการแก้ไขนี้ ซึ่งไม่มีรายละเอียดเพียงพอที่จะรู้ว่าเกี่ยวข้องหรือไม่
ฉันยังได้ตรวจสอบ ปัญหาคิว สำหรับโมดูล contrib แต่ดูเหมือนว่าจะเป็นข้อ จำกัด ของ Views เองซึ่งเป็นแกนหลัก
ฉันได้ลองเพิ่ม กำหนดค่าตัวกรองบริบท: คำศัพท์อนุกรมวิธาน: คำศัพท์ผู้ปกครอง
ไปที่มุมมอง แต่นั่นสร้างเมนูกระโดดที่มีโดยไม่คาดคิด เท่านั้น ข้อกำหนดผู้ปกครอง:
âââ ฟู
âââ บาร์
âââ บาซ
ณ จุดนี้ ฉันเริ่มคิดว่ามันจะง่ายกว่ามากในการเขียนการใช้ hook ที่จะแก้ไขแบบสอบถาม แต่นี่เป็นหัวข้อที่ยากในการค้นคว้าทางออนไลน์ (ข้อความค้นหาของฉันทำให้เกิดคิวปัญหาที่ไม่เกี่ยวข้องจำนวนมากที่ย้อนกลับไปที่ Drupal 5)
ดังนั้นเพื่อสรุปทั้งหมดนี้เป็นคำถามที่ตอบได้ การใช้งานตะขอ จะเหมาะที่สุดสำหรับงานนี้หรือไม่?
ฉันเอนเอียงไปทางการใช้ hook_views_query_alter()
เพื่อปรับเปลี่ยน $สอบถาม
วัตถุเอง (ภายใน $query->ที่ไหน
) ขึ้นอยู่กับ ความคิดเห็นนี้แต่ฉันอยู่ในน้ำที่ค่อนข้างลึกที่นี่