Score:3

ป้องกันการแสดงขอบเขตของ Layout Builder ที่ไม่มีเนื้อหา

ธง in

การใช้ Layout Builder เมื่อคุณเพิ่มบล็อกไปยังเลย์เอาต์ที่มีการควบคุมการเข้าถึง และผู้ใช้เยี่ยมชมเพจที่ไม่มีสิทธิ์เข้าถึง เลย์เอาต์นั้นจะว่างเปล่า

เราจะป้องกันไม่ให้เลย์เอาต์แสดงผลเลยได้อย่างไรหากเนื้อหาว่างเปล่า ในขณะที่ {% if content.foo|render|striptags|trim %} เคล็ดลับใช้ได้กับเทมเพลตบล็อก ฉันไม่สามารถหาวิธีรับเอฟเฟกต์เดียวกันกับเทมเพลตเลย์เอาต์ได้

ผลลัพธ์ที่ได้คือฉันมีมาร์กอัปพิเศษในหน้าซึ่งจัดประเภทและสร้างช่องว่างภายในพิเศษและพื้นที่แนวตั้งระหว่างพื้นที่เลย์เอาต์ที่มีประชากร

แก้ไข:

ฉันได้อัปเดตตอนนี้ด้วยเหตุการณ์ที่ Layout Builder ต้องการ:

คลาส MyModuleEventSubscriber ใช้ EventSubscriberInterface {

  /**
   * ตัวจัดการเหตุการณ์การตอบสนองของ Layout Builder
   *
   * @param SectionComponentBuildRenderArrayEvent $เหตุการณ์
   * สร้างเหตุการณ์การเรนเดอร์
   */
  ฟังก์ชั่นสาธารณะ onBuildRender (SectionComponentBuildRenderArrayEvent $event) {
    $id = $event->getPlugin()->getPluginDefinition()['id'];

    ถ้า ($id == 'inline_block' && !$event->inPreview()) {
      $build = $event->getBuild();
      $build['#create_placeholder'] = FALSE;
      $event->setBuild($build);
    }
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นคงที่สาธารณะ getSubscribedEvents () : อาร์เรย์ {
    $events[LayoutBuilderEvents::SECTION_COMPONENT_BUILD_RENDER_ARRAY] = ['onBuildRender', 110];
    ส่งคืนเหตุการณ์ $;
  }

}

xdebug

ป้อนคำอธิบายรูปภาพที่นี่

Score:1
ธง cn

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

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

/**
 * ใช้ hook_block_build_BASE_BLOCK_ID_alter()
 */
ฟังก์ชัน mymodule_block_build_example_block_alter (อาร์เรย์ &$build, \Drupal\Core\Block\BlockPluginInterface $block) {
  // ปิดการใช้งานตัวยึดตำแหน่งบล็อกนี้
  $build['#create_placeholder'] = FALSE;
}

ดู BigPipe สามารถยกเว้นบล็อกบางบล็อกได้หรือไม่ สิ่งนี้ไม่ได้ขึ้นอยู่กับการเปิดใช้งาน BigPipe หรือไม่ แต่ฉันคิดว่าสำหรับปัญหาทั้งสองวิธีนั้นเหมือนกัน

cn flag
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้[ย้ายไปแชท](https://chat.stackexchange.com/rooms/129156/discussion-on-answer-by-4k4-prevent-rendering-of-layout-builder-regions-that-hav) .

โพสต์คำตอบ

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