Score:0

เปลี่ยนวัตถุย่อหน้าสำหรับการแสดงผล

ธง mx

ฉันมีประเภทย่อหน้าที่มีฟิลด์อ้างอิงโหนด ซึ่งถ้าคุณเว้นว่างไว้ ควรจะแสดงโหนดแบบสุ่มโดยใช้ตรรกะที่กำหนด

ฉันมีรหัสสำหรับทำแบบสอบถามและรับโหนด และโดยหลักแล้วฉันต้องการวางไว้บนวัตถุย่อหน้าในตะขอพรีเรนเดอร์เพื่อให้ย่อหน้าสามารถแสดงผลได้ตามปกติโดยใช้การกำหนดค่าตามปกติ อะไรทำนองนี้ (คำเตือน: 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 วินาที ดังนั้นทุกนาทีมันจะแสดงโหนดอื่นและจะไม่เรียกใช้ลอจิกการสืบค้นในทุกคำขอ)

Score:0
ธง de

คุณต้องสร้างโหนดที่โหลดลงในอาร์เรย์ที่แสดงผลได้ และเพิ่มลงใน สร้าง $ อาร์เรย์

$node = getRandomNode();

$entity_type = $node->getEntityTypeId();
$view_mode = 'ทีเซอร์';
$view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity_type);
$storage = \Drupal::entityTypeManager()->getStorage($entity_type);
$build['field_mynoderef'] = $view_builder->view($node, $view_mode);

คำถามของคุณเกี่ยวกับการแคชไม่เกี่ยวข้องกับปัญหานี้ และควรแยกออกเป็นคำถามแยกต่างหาก Drupal Answers เป็นไซต์ถามตอบที่มีรูปแบบของหนึ่งคำถามต่อหนึ่งคำตอบ และการเพิ่มคำตอบสำหรับคำถามนั้นจะทำให้หัวข้อนี้เจือจางลง

mx flag
จะทำอย่างไรถ้าฉันต้องการใช้การกำหนดค่าการแสดงย่อหน้าซ้ำ (บางทีฉันอาจขอมากเกินไป แต่ดูเหมือนว่าควรเป็นไปได้) นี่คือเหตุผลที่ฉันต้องการแก้ไขวัตถุย่อหน้าเองและไม่เล่นกับอาร์เรย์เรนเดอร์สำหรับโหนดจริง แนวคิดคือสามารถลืมโค้ดนี้ได้ในกรณีที่การกำหนดค่าการแสดงย่อหน้าเปลี่ยนไป (เช่น โหมดการดูสำหรับโหนด)
mx flag
นอกจากนี้ hook_paragraph_view เหมาะสำหรับสิ่งนี้หรือไม่ เนื่องจากยังมี hook_paragraph_view_alter และแน่นอน hook_preprocess_paragraph (อันสุดท้ายที่ฉันคิดว่าสายเกินไปในกระบวนการ)
Jaypan avatar
de flag
ฉันจะใช้ `hook_paragraph_view_alter()` สำหรับสิ่งนี้ และคุณควรสร้างโหมดมุมมองใหม่สำหรับการแสดงผลนี้ และกำหนดฟิลด์ให้กับโหมดมุมมองนั้น จากนั้นใช้โหมดการดูนั้นแทน 'ทีเซอร์' และคุณไม่ต้องกังวลว่าใครจะเปลี่ยนการแสดงผล เนื่องจากจะใช้กับมุมมองนี้เท่านั้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา