Используя Layout Builder, когда вы добавляете блок в макет с элементами управления доступом, а пользователь посещает страницу без доступа, макет оказывается пустым.
Как вообще предотвратить отображение макета, если его содержимое пусто? В то время как {% if content.foo|рендеринг|стриптэги|обрезка %}
трюк работает для шаблонов блоков, я не могу понять, как добиться такого же эффекта с шаблонами макета.
Конечным результатом является дополнительная разметка на странице, которая классифицируется и создает дополнительные отступы и вертикальное пространство между заполненными областями макета.
редактировать:
Теперь я обновил событие, которое нужно Layout Builder:
класс MyModuleEventSubscriber реализует EventSubscriberInterface {
/**
* Обработчик событий ответа Layout Builder.
*
* @param SectionComponentBuildRenderArrayEvent $event
* Построить событие рендеринга.
*/
общедоступная функция onBuildRender (SectionComponentBuildRenderArrayEvent $event) {
$id = $event->getPlugin()->getPluginDefinition()['id'];
если ($id == 'inline_block' && !$event->inPreview()) {
$build = $event->getBuild();
$build['#create_placeholder'] = ЛОЖЬ;
$event->setBuild($build);
}
}
/**
* {@inheritdoc}
*/
общедоступная статическая функция getSubscribedEvents(): массив {
$events[LayoutBuilderEvents::SECTION_COMPONENT_BUILD_RENDER_ARRAY] = ['onBuildRender', 110];
вернуть $события;
}
}