ฉันใช้ Drupal 9 และ views_field_view เพื่อฝังมุมมอง "ลูก" ไว้ในมุมมอง "พาเรนต์" เนื่องจากมีหลายแถวในมุมมองพาเรนต์ ฉันจึงต้องแสดงผลมุมมอง "ชายด์" เดียวกันหลายรายการ สิ่งนี้จะป้องกันไม่ให้ "เลขหน้า" แสดงผลเนื่องจาก "รหัสเพจเจอร์" เหมือนกันสำหรับมุมมองย่อยที่แสดงผลหลายรายการ
ฉันสามารถหลีกเลี่ยงปัญหาการแสดงผลนั้นได้โดยการตั้งค่ารหัสเพจเจอร์โดยทางโปรแกรม ดูรหัสด้านล่าง
ใช้ Drupal\views\ViewExecutable;
ฟังก์ชัน hook_views_pre_view (ViewExecutable $view, $display_id, อาร์เรย์ &$args) {
ถ้า ($view->id() == '<view_id>') {
$unique_id = $view->args[0]; // อาร์กิวเมนต์ที่เป็น ID เฉพาะ
$view->pager->options['id'] = $unique_id;
}
}
เมื่อใช้โค้ดข้างต้นในโมดูล เพจเจอร์ของมุมมองย่อยจะปรากฏขึ้นในขณะนี้ อย่างไรก็ตาม การคลิกหมายเลขเพจเจอร์หรือปุ่มจะส่งผลให้มุมมองพาเรนต์อัปเดตแทนที่จะเป็นมุมมองย่อย
ฉันจะเปลี่ยนเพจเจอร์สำหรับมุมมอง "ลูก" เพื่อให้อัปเดตมุมมองลูกแทนพาเรนต์ได้อย่างไร
ดูเหมือนว่าฉันต้องเริ่มต้นเพจเจอร์อย่างถูกต้องหรือแก้ไข jquery เพื่อให้อัปเดตมุมมองลูกแทนพาเรนต์หรือไม่ ฉันจะทำอย่างนั้นได้อย่างไร
ต่อไปนี้คือบางสิ่งที่ฉันได้ตรวจสอบแล้ว แต่จนถึงขณะนี้ยังไม่ได้ผล:
- แก้ไขมุมมอง Drupal 7 - ใช้ไม่ได้เนื่องจากจำนวนการดูถูกย้ายเข้าสู่แกนหลัก?
- Views โหลดปัญหาเพิ่มเติม, มุมมองแสดงโมดูลเพิ่มเติม, ดูปัญหาการเลื่อนไม่สิ้นสุด
- ภายในโมดูล views_field_view ดูเหมือนว่าจะพยายามตั้งค่ารหัสเฉพาะสำหรับเพจเจอร์ก่อนที่จะใช้สิ่งต่อไปนี้
$view->initPager();
เพื่อเริ่มต้นเพจเจอร์ อย่างไรก็ตาม การดีบักแสดงว่ารหัสที่ตั้งค่าไว้ไม่ได้ถูกนำไปใช้กับ $view มีบางอย่างเปลี่ยนแปลงกับ initPager หรือไม่ (แม้ว่า API จะไม่ได้ระบุว่ามีก็ตาม)