ฉันมีประเภทย่อหน้าที่มีฟิลด์อ้างอิงโหนด ซึ่งถ้าคุณเว้นว่างไว้ ควรจะแสดงโหนดแบบสุ่มโดยใช้ตรรกะที่กำหนด
ฉันมีรหัสสำหรับทำแบบสอบถามและรับโหนด และโดยหลักแล้วฉันต้องการวางไว้บนวัตถุย่อหน้าในตะขอพรีเรนเดอร์เพื่อให้ย่อหน้าสามารถแสดงผลได้ตามปกติโดยใช้การกำหนดค่าตามปกติ อะไรทำนองนี้ (คำเตือน: pseudo-codish):
ฟังก์ชัน mymodule_paragraph_view($build,$paragraph,$display,$view_mode) {
ถ้า (!is_my_paragraph_type($paragraph)) กลับ;
ถ้า (!$paragraph->field_mynoderef->isEmpty()) กลับ;
$node = getRandomNode();
$paragraph->set('field_mynoderef', $node);
}
นี่เป็นการตั้งค่าอย่างถูกต้อง แต่ดูเหมือนว่าจะสายเกินไปในกระบวนการเรนเดอร์ที่จะส่งผลกระทบต่อเอาต์พุตที่เรนเดอร์ (เช่น มันไม่แสดงโหนดจริงๆ) ฉันได้ลองทำสิ่งนั้นบน $build['#วรรค']
วัตถุซึ่งมีย่อหน้าเดียวกันโดยมีผลที่คล้ายกัน ฉันจะทำงานนี้ได้อย่างไร
โบนัส: วิธีทำให้มันแคชเอาต์พุตโดยใช้การกำหนดค่าตามเวลา (เช่น หมดอายุหลังจาก 60 วินาที ดังนั้นทุกนาทีมันจะแสดงโหนดอื่นและจะไม่เรียกใช้ลอจิกการสืบค้นในทุกคำขอ)