การใช้ 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];
ส่งคืนเหตุการณ์ $;
}
}