Layout Builder Restrictions
Permite a los constructores de sitios controlar qué bloques y layouts están disponibles para su colocación en la interfaz de Layout Builder, con restricciones configurables por tipo de entidad y modo de vista.
layout_builder_restrictions
Install
composer require 'drupal/layout_builder_restrictions:^3.0'
Overview
Layout Builder Restrictions complementa el módulo Layout Builder del core de Drupal proporcionando control granular sobre qué bloques y layouts pueden ser colocados por los editores de contenido. Mientras que el módulo Layout Builder del core permite usar todos los bloques y layouts por defecto, este módulo permite a los constructores de sitios curar las opciones disponibles.
Cada tipo de entidad puede especificar individualmente qué bloques están disponibles para su colocación, y cada modo de vista de la entidad puede tener diferentes configuraciones de restricción. El módulo proporciona una arquitectura de plugins flexible que permite aplicar diferentes metodologías de restricción, con el plugin predeterminado restringiendo bloques y layouts por modo de vista de entidad.
Las restricciones pueden configurarse como listas de permitidos (solo se permiten los bloques especificados) o listas de denegados (se permiten todos los bloques excepto los especificados), y categorías enteras de bloques pueden restringirse. El módulo también soporta la restricción de bloques inline, tipos de bloques personalizados y bloques de contenido por separado, proporcionando máxima flexibilidad para la gobernanza del contenido.
Features
- Restringir qué bloques pueden colocarse en Layout Builder por tipo de entidad y modo de vista
- Restringir qué layouts están disponibles para añadir secciones
- Soporte para lista de permitidos (permitir bloques específicos) o lista de denegados (restringir bloques específicos)
- Restringir categorías enteras de bloques con una sola configuración
- Controles separados para Tipos de Bloques Personalizados, Bloques de Contenido (instancias individuales de bloques) y Bloques Inline
- Arquitectura de plugins que permite metodologías de restricción personalizadas
- Valida el movimiento de bloques mediante arrastrar y soltar para aplicar restricciones
- Controles para categorías de bloques recién disponibles (permitir o restringir por defecto)
- Compatible con anulaciones de layout de elementos de contenido individuales
- Submódulo para restricciones por layout y por región
- Config Actions para gestión programática de restricciones (Drupal 12+)
- Manejo de categorías compatible con multilingüe
Use Cases
Restringir editores de contenido solo a bloques aprobados
En una instalación multi-sitio o empresarial, restringir Layout Builder para mostrar solo bloques aprobados y probados. Habilitar el módulo, navegar a la configuración de visualización de cada tipo de contenido, y para cada categoría de bloques, elegir 'Permitir bloques específicos' y marcar solo los bloques que los editores de contenido deben usar. Esto previene que los editores usen accidentalmente bloques de desarrollo o bloques que no coinciden con los estándares de diseño del sitio.
Permitir todos los bloques excepto los problemáticos específicos
Cuando la mayoría de los bloques son aceptables pero algunos causan problemas (rendimiento, seguridad o diseño), usar el enfoque de lista de denegados. Para cada categoría que contenga bloques problemáticos, seleccionar 'Restringir bloques específicos' y marcar solo los bloques a ocultar. Todos los demás bloques en esa categoría permanecen disponibles.
Limitar layouts disponibles para coincidir con el sistema de diseño
Cuando tu theme solo soporta correctamente ciertos layouts, restringir Layout Builder para mostrar solo esos layouts. En el fieldset 'Layouts disponibles para secciones', seleccionar 'Permitir solo layouts específicos' y marcar solo los layouts que tienen CSS/estilos apropiados en tu theme.
Diferentes restricciones por tipo de contenido
Configurar diferente disponibilidad de bloques para diferentes tipos de contenido. Por ejemplo, permitir bloques promocionales en landing pages pero restringirlos en artículos de blog. Cada tipo de entidad y modo de vista tiene configuraciones de restricción independientes.
Restricciones por región para layouts complejos
Habilitar el submódulo 'Layout Builder Restrictions By Region' para restringir bloques a regiones específicas. Por ejemplo, permitir bloques hero solo en una región 'banner', o restringir widgets de barra lateral de aparecer en áreas de contenido principal.
Restringir creación de bloques inline
Prevenir que los editores de contenido creen nuevos bloques inline (lo cual puede llevar a problemas de gestión de contenido) mientras se permite la colocación de bloques reutilizables de la biblioteca de bloques. Restringir la categoría 'Inline blocks' para controlar qué tipos de bloques pueden crearse inline.
Restricciones programáticas mediante Config Actions
Para Drupal 12+, usar Config Actions en recipes para establecer restricciones programáticamente. Usar entityViewModeRestrictionAppendRestrictedBlocks para añadir bloques a la lista de denegados o entityViewModeRestrictionAppendAllowedBlocks para la lista de permitidos durante la instalación del sitio o actualizaciones de configuración.
Tips
- Usar el enfoque de lista de denegados cuando la mayoría de los bloques deben estar disponibles y solo necesita ocultar algunos específicos
- Usar el enfoque de lista de permitidos cuando quiere control estricto y solo bloques específicos deben estar disponibles
- La opción 'Restringir todos los bloques existentes y nuevos' es útil para categorías que nunca quiere que los editores usen
- Habilitar 'Restringir todos los bloques de categorías recién disponibles' si quiere aprobar manualmente bloques de módulos recién instalados
- Probar restricciones iniciando sesión como un rol de editor de contenido - los usuarios admin pueden evadir algunas restricciones dependiendo de los permisos
- Al usar el submódulo by-region, puede establecer restricciones para 'Todas las regiones' primero, luego sobrescribir regiones específicas según sea necesario
- Exportar configuración con drush cex para versionar sus configuraciones de restricción
- Considerar combinar con Content Moderation para un flujo de trabajo editorial completo
Technical Details
Admin Pages 2
/admin/config/content/layout-builder-restrictions
Gestiona qué plugins de Layout Builder Restrictions están activos y su orden de ejecución. Esta página muestra una tabla arrastrable de todos los plugins de restricción disponibles, permitiendo a los administradores habilitar/deshabilitar plugins y establecer su peso (prioridad de ejecución). Los plugins con menor peso se ejecutan primero.
/admin/structure/types/manage/{content_type}
Cuando Layout Builder está habilitado para un tipo de contenido, este formulario se aumenta con configuraciones de restricción. Expandir el fieldset 'Opciones de layout' para configurar qué bloques y layouts están disponibles para este tipo de entidad y modo de vista.
Permissions 1
Hooks 3
hook_plugin_filter_block__layout_builder_alter
Altera la lista de bloques disponibles en la interfaz 'Añadir Bloque' de Layout Builder. Este hook es invocado por el filtrador de plugins del core de Drupal y permite a los módulos eliminar o modificar definiciones de bloques antes de que se muestren al usuario.
hook_plugin_filter_layout__layout_builder_alter
Altera la lista de layouts disponibles en la interfaz 'Añadir Sección' de Layout Builder. Este hook permite a los módulos restringir qué plugins de layout están disponibles para crear nuevas secciones.
hook_form_entity_view_display_edit_form_alter
El módulo usa este hook para inyectar la interfaz de configuración de restricciones en los formularios de visualización de entidades. Otros módulos pueden usar este hook para personalizar aún más la interfaz de restricciones.
Troubleshooting 5
Al habilitar Layout Builder Restrictions By Region después de que el módulo base ya estaba configurado, debe volver a guardar las restricciones de layout de cada entidad. Navegar a la configuración de visualización de cada tipo de contenido y guardar el formulario para activar las restricciones por región.
Verificar múltiples lugares: 1) La categoría del bloque puede estar completamente restringida en 'restricted_categories', 2) Si usa listas de permitidos, el bloque puede no estar marcado, 3) La 'Restricción predeterminada para nuevas categorías' puede estar configurada en 'Restringir' y la categoría del bloque no era conocida anteriormente, 4) Múltiples plugins de restricción pueden estar activos - verificar /admin/config/content/layout-builder-restrictions.
El módulo distingue entre 'Tipos de bloques personalizados', 'Bloques personalizados' (instancias específicas) y 'Bloques Inline'. Si configura restricciones en Bloques personalizados (instancias específicas), esas tienen precedencia sobre las restricciones de Tipos de bloques personalizados. Verificar ambas configuraciones.
El módulo maneja sitios multilingües usando nombres de categoría sin traducir internamente. Si actualizó desde una versión anterior y tiene el módulo locale habilitado, vuelva a guardar la configuración de Layout Builder Restrictions de cada entidad para asegurar compatibilidad.
Asegúrese de que el servicio route subscriber esté activo. Limpiar cachés con drush cr. El módulo sobrescribe las rutas layout_builder.move_block y layout_builder.move_block_form para añadir validación.
Security Notes 4
- El permiso 'configure layout builder restrictions' debe otorgarse solo a administradores de confianza ya que controla lo que los editores de contenido pueden hacer
- Las restricciones se aplican del lado del servidor, no solo en la interfaz - el movimiento de bloques mediante arrastrar y soltar se valida contra las restricciones
- El módulo no proporciona restricciones basadas en roles directamente - combinar con el sistema de permisos de Drupal para restricciones específicas por usuario
- Las Config Actions (entityViewModeRestrictionAppendRestrictedBlocks, etc.) pueden modificar restricciones programáticamente - auditar cualquier recipe o código personalizado que las use