Contratos de tipos de bloque
Propósito y alcance
Esta referencia describe bloques publicados, campos editables, traducciones, reglas de hijos y renderizado público. La administración muestra el contrato en modo solo lectura; no define esquemas personalizados ni crea formularios nuevos.
El sistema de plugins de plugins añade hooks de bloque de plugin solo declarativos mediante PluginBlockTypeDefinition, PluginBlockPackDefinition y PluginBlockRegistry. Los plugins habilitados pueden exponer handles propios del plugin, como analytics-tools::score-card, para su descubrimiento, pero estas declaraciones no sustituyen a los contratos de bloque core distribuidos, las vistas de bloque core, los seeders core ni los servicios de edición de bloques. Los handles sin cualificar de estilo core, como hero, siguen perteneciendo al core y se rechazan en las declaraciones de plugins.
Definición
A El contrato de tipo de bloque es el acuerdo técnico actual sobre cómo se comporta un tipo de bloque en las capas de CMS:
- identidad del catálogo: slug, etiqueta, categoría, estado y metadatos del sistema o contenedor
- fuente del formulario de administrador: qué parcial de Blade edita actualmente el bloque y qué campos expone
- validación y solicitud manejo: cómo
WebBlocks\Cms\Http\Requests\Admin\BlockRequestnormaliza y valida actualmente las cargas útiles de bloque - propiedad de almacenamiento: qué valores se encuentran en
blocks, filas de traducción dedicadas,block_mediao registros relacionados - propiedad de traducción: qué campos de cara al usuario son locale-owned
- propiedad compartida: qué configuraciones o relaciones permanecen compartidas entre locales
- propiedad de medios o relaciones:
media_iddirecto,block_mediaordenado, búsquedas de navegación o relaciones en la misma página - soporte infantil: si el bloque es un contenedor y si los tipos secundarios están restringidos
- fuente de renderizador público: qué Blade público parcial representa el bloque hoy
- contrato raíz del renderizador: si el bloque posee su marcado raíz público o depende de la ruta contenedora genérica
- portabilidad y revisiones: si la forma de almacenamiento actual debe continuar viajando a través de revisiones, clonación, exportación/importación y promoción
- Pruebas y brechas: cobertura enfocada conocida, comportamiento poco claro o deuda de compatibilidad
Términos del contrato actual
Términos de estado utilizados a continuación:
clear: el formulario de administración, la gestión de peticiones, el almacenamiento y el renderizador coinciden en gran medidamostly clear: el contrato actual se entiende, pero tiene una salvedad destacabletransitional: el contrato actual mantiene de forma intencionada una ruta de compatibilidad o un patrón de propiedad mixtoneeds review: confirme el contrato instalado antes de depender del comportamientolegacy/fallback: el comportamiento publicado depende de una ruta alternativa o de compatibilidad
Reglas de propiedad del almacenamiento
El contrato de trabajo actual y futuro debe mantener explícitas estas reglas de propiedad:
- La copia orientada al usuario pertenece a las filas de traducción cuando el bloque es de propiedad local
- Los datos operativos o de configuración compartidos pertenecen a la configuración del bloque compartido o relaciones explícitas
- Los medios deben usar
media_idoblock_mediarutas de propiedad cuando corresponda - evite mover contenido de cara al usuario a configuraciones compartidas arbitrarias
- mantenga las rutas de almacenamiento de compatibilidad documentadas cuando aún afecten la salida pública o las importaciones
Desde CMS 1.98.6, el campo modelo settings/API compatible está respaldado por registros relacionales. Los campos principales conocidos utilizan columnas de apariencia, medios, navegación y contenido de tipo finito. Los enlaces de contenido, la configuración de la colección y los valores de la instancia de la aplicación tienen registros separados; Los nodos escritos conservan la estructura, el orden y las extensiones históricas/de complementos. CMS 1.98.8 eliminó las copias de reversión temporales de JSON; SQL tiene autoridad. El editor, la propiedad de la traducción, las cargas útiles API y los métodos de renderizado mantienen sus contratos existentes; La migración de almacenamiento no mueve la copia de propiedad local a la configuración compartida.
Validación de los ajustes de edición
CMS 1.105.9 agrega el descubrimiento authoring_settings_schema revisado para los 55 bloques principales publicados. Lea los indicadores de creación, PATCH y escritura del administrador por separado antes de proporcionar un campo. Los valores nuevos o modificados deben satisfacer los tipos, enumeraciones y límites declarados; Los campos no admitidos devuelven errores de validación en lugar de aceptarse o borrarse silenciosamente. Este sigue siendo un contrato de propiedad del código, no un esquema editable ni un generador de formularios generado.
U Los valores históricos sin cambios sobreviven a ediciones no relacionadas y clonaciones, puestas en escena y revisiones confiables. Los bloques nuevos y los reemplazos completos deben pasar la validación actual. Los complementos sin esquema conservan su comportamiento existente; Los esquemas escalares del complemento opcional no reemplazan los validadores de medios, aplicaciones o Dynamic Content. HTML sigue siendo solo para humanos.
Consulte Esquemas de ajustes de edición por bloque para conocer los metadatos de operación, las reglas de compatibilidad y el comando de compatibilidad de solo lectura webblocks:blocks:audit-settings. La auditoría de catálogo que aparece a continuación comprueba los formularios y renderizadores distribuidos, no los ajustes almacenados.
Fuentes distribuidas
La referencia utiliza el catálogo, formularios y renderizadores distribuidos.
- fuente del catálogo:
src/Support/Blocks/CoreBlockTypeCatalogSyncer.php - normalización de solicitud de edición de bloque:
src/Http/Requests/Admin/BlockRequest.php - ayudantes de persistencia:
src/Support/Blocks/BlockPayloadWriter.php,src/Support/Blocks/BlockTranslationWriter.php,src/Support/Blocks/BlockTranslationResolver.php - registro de traducción:
src/Support/Blocks/BlockTranslationRegistry.php - formularios de administrador:
resources/views/admin/blocks/types/*.blade.php - representantes públicos:
resources/views/pages/partials/blocks/*.blade.php - referencias de cobertura: catálogo de bloques, renderizado, traducción y pruebas específicas de slug bajo
tests/Feature/
Tipos de bloques principales publicados actualmente documentados aquí: 55.
Conciliación de catálogo: WebBlocks CMS 1.105.8. La tabla cubre las 55 definiciones principales publicadas; siete definiciones adicionales permanecen inéditas. Las notas de la fase posterior a continuación son registros históricos, no un segundo recuento del catálogo actual.
Comando de auditoría
Operadores y desarrolladores pueden ejecutar esta comprobación de solo lectura:
php artisan block-types:contracts-audit
php artisan block-types:contracts-audit --json
El comando es de solo lectura.
- no modifica la base de datos
- no depende del contenido del sitio instalado
- lee las definiciones del catálogo core distribuido
- verifica la presencia de los archivos del formulario de administración y del renderizador público distribuidos
- informa de los metadatos de la familia de traducción y del soporte básico de contenedores
El comando es una ayuda de actualidad para detectar desviaciones del catálogo y de la presencia de archivos. No sustituye a las notas de contrato más completas de este documento.
Vista Administrativa De Solo Lectura
Abra los detalles en modo solo lectura en Admin -> System -> Block Types.
- cada fila puede abrir un modal
Block Type Contract - el modal es solo informativo y no envía actualizaciones
- muestra los detalles de catálogo, formulario de administración, almacenamiento, traducción, medios o relaciones, hijos, renderizador y carencias a partir del código distribuido
- no convierte la administración de Block Types en un editor de esquemas ni en un constructor de formularios
- los tipos de bloque personalizados o en borrador también pueden abrir el modal, pero pueden mostrar
No shipped contract is documented for this block type yet.cuando no hay ningún contrato core definido
Matriz de contratos de bloques publicados
Contenido
Header — header
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | header |
| Label | Header |
| Categoría | content |
| Campos traducibles | title mediante filas de traducción de texto |
| Campos compartidos/de ajustes | variant nivel de encabezado; settings.alignment; anclaje compartido en settings.anchor con reserva heredada en url |
| Campos de medios/relación | TOC en la misma ranura lee bloques de encabezado anclados |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | Bloque de encabezado canónico; el contrato del anclaje compartido es claro, pero todavía conserva el comportamiento de reserva heredado con url. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/header.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/header.blade.php |
| Contrato de la raíz del renderizador | Posee su propio elemento de encabezado raíz |
| Pruebas / cobertura | SyncCoreBlockTypesCommandTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Plain Text — plain_text
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | plain_text |
| Label | Plain Text |
| Categoría | content |
| Campos traducibles | content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.alignment |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | Primitiva sencilla de texto corrido traducido. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/plain_text.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/plain_text.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <p> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Rich Text — rich-text
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | rich-text |
| Label | Rich Text |
| Categoría | content |
| Campos traducibles | content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | Ninguno |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | El almacenamiento seguro de HTML y la propiedad de la traducción están claros. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/rich-text.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/rich-text.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz .wb-rich-text cuando hay contenido |
| Pruebas / cobertura | RichTextBlockTest, PublicRichContentTest, BlockTranslationIntegrityTest |
Code — code
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | code |
| Label | Code |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.language |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque alinea el título traducido del código, la etiqueta y el cuerpo del fragmento con la arquitectura de traducción de texto existente, y ahora ignora en la salida pública los árboles de hijos históricos arbitrarios. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/code.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/code.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <pre><code> |
| Pruebas / cobertura | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Button Link — button_link
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | button_link |
| Label | Button Link |
| Categoría | content |
| Campos traducibles | la etiqueta title mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.url; settings.target; variant compartido |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La URL y el destino compartidos con la etiqueta traducida son coherentes. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/button_link.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/button_link.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <a.wb-btn> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest |
Card — card
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | card |
| Label | Card |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | Compartido media_id; settings.layout_name; settings.background_position; settings.background_overlay; opcionales settings.url y settings.target |
| Campos de medios/relación | Fondo opcional image vía directa media_id; Los bloques de regiones secundarias definen la estructura. |
| Comportamiento como hijo/contenedor | Contenedor; los únicos hijos directos permitidos son card_header, card_body y card_footer |
| Estado actual | clear |
| Carencias conocidas / notas | La tarjeta es un shell componible. Su URL completa-card opcional es segura y semántica; Los editores no deben colocar controles interactivos anidados en Tarjetas vinculadas. Admite fondos de biblioteca multimedia y mantiene un respaldo heredado mínimo para filas más antiguas sin regiones de tarjeta. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/card.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/card.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <article class="wb-card"> o una raíz semántica <a class="wb-card wb-no-decoration"> cuando está vinculado |
| Pruebas / cobertura | CardClickableRenderTest, PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, MediaVisualBlockContractsTest |
Card Header — card_header
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | card_header |
| Label | Card Header |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name, settings.icon_slug, settings.icon_tone, settings.icon_size |
| Campos de medios/relación | Solo la relación con el card padre |
| Comportamiento como hijo/contenedor | Contenedor; solo puede colocarse bajo card; no se admiten hijos de región de tarjeta |
| Estado actual | clear |
| Carencias conocidas / notas | Bloque de región de tarjeta componible para header content. Los íconos opcionales utilizan slugs activos del catálogo content y se representan solo a través de clases seguras de íconos, tonos y tamaños. El encabezado de la tarjeta no tiene copia de la credencial y, por lo tanto, no muestra ningún tono de credencial. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/card_header.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/card_header.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <div class="wb-card-header"> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Card Body — card_body
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | card_body |
| Label | Card Body |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name |
| Campos de medios/relación | Solo la relación con el card padre |
| Comportamiento como hijo/contenedor | Contenedor; solo puede colocarse bajo card; no se admiten hijos de región de tarjeta |
| Estado actual | clear |
| Carencias conocidas / notas | Bloque de región Card componible para el contenido principal. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/card_body.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/card_body.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <div class="wb-card-body"> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Card Footer — card_footer
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | card_footer |
| Label | Card Footer |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name |
| Campos de medios/relación | Solo la relación con el card padre |
| Comportamiento como hijo/contenedor | Contenedor; solo puede colocarse bajo card; no se admiten hijos de región de tarjeta |
| Estado actual | clear |
| Carencias conocidas / notas | Bloque de región Card componible para el pie o el contenido de acción. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/card_footer.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/card_footer.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <div class="wb-card-footer"> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Stat Card — stat-card
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | stat-card |
| Label | Stat Card |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | El url canónico sigue siendo compartido en la fila del bloque |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque mantiene el campo de URL opcional existente y ahora renderiza un enlace público sencillo cuando está presente. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/stat-card.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/stat-card.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de stat-card |
| Pruebas / cobertura | StatCardTest, BlockTranslationIntegrityTest |
Image — image
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | image |
| Label | Image |
| Categoría | content |
| Campos traducibles | caption, alt text mediante filas de traducción de imagen |
| Campos compartidos/de ajustes | media_id compartido; canónico compartido url; settings.viewer_enabled; settings.viewer_group |
| Campos de medios/relación | Relación directa con medios de imagen mediante media_id |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | Caption y alt text son propiedad local, mientras que los medios, la URL del enlace opcional y la agrupación de espectadores permanecen compartidos. Los enlaces explícitos tienen prioridad; de lo contrario, los bloques de imágenes habilitados con el mismo grupo comparten el Visor de galería CMS existente sin cambiar la composición de la página. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/image.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/image.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz semántica <figure> cuando existen medios y puede registrarse con un Visor de galería agrupado. |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, BlockTranslationIntegrityTest, PublicOverlayRegistryTest |
Gallery — gallery
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | gallery |
| Label | Gallery |
| Categoría | content |
| Campos traducibles | Por cada elemento de la galería: alt_text, caption, overlay_title y overlay_text mediante block_gallery_item_translations |
| Campos compartidos/de ajustes | Configuración de presentación compartida de gallery más visor opcional title y relaciones de elementos ordenados block_media gallery |
| Campos de medios/relación | Filas block_media ordenadas con el rol gallery_item; el texto de los elementos de la galería propio de cada idioma vive en block_gallery_item_translations; pueden seguir existiendo valores heredados de title/subtitle guardados en el bloque, pero el renderizado público los ignora |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | La galería ahora es un bloque de colección de medios. El formulario de administración normal utiliza un editor de filas de lista compacto en lugar del antiguo grid de activos seleccionados. Su selector Add Gallery Items anidado permanece en el contrato de administrador compartido #wb-overlay-root, por lo que WebBlocks UI posee el ciclo de vida modal apilado y las listas de resultados largas y compactas mantienen la altura de fila natural mientras que el cuerpo modal sigue siendo el contenedor de desplazamiento. Las variantes públicas son distintas: grid mantiene celdas iguales, masonry usa CSS columns con altura natural image y collage mantiene la primera composición destacada. Los valores masonary guardados heredados aún se aceptan y normalizan según la ruta canónica masonry. La galería ya no posee encabezados de introducción ni resultados de párrafos; Los editores deben colocar content_header más plain_text o rich-text antes de la Galería cuando se necesita una copia de la sección. El visor opcional title etiqueta solo el modal de caja de luz header. Los elementos de reserva basados en configuraciones heredadas siguen siendo legibles para content anteriores. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/gallery.blade.php más resources/views/admin/blocks/types/partials/gallery-items-editor.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/gallery.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su envoltorio de galería y registra un único modal de visor bajo #wb-overlay-root cuando el lightbox está activado |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, PageBuilderExperienceTest, SiteCloneServiceTest, SiteExportImportTest, SitePromotionTest, ReconstructionIntegrityTest, SharedSlotRevisionTest |
Download — download
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | download |
| Label | Download |
| Categoría | content |
| Campos traducibles | title, subtitle mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; variant compartido |
| Campos de medios/relación | Relación directa con el archivo de descarga mediante media_id |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque mantiene compartidos el archivo de descarga seleccionado y la variante del botón, y traslada la etiqueta visible y el texto de ayuda a la vía de traducción de texto existente. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/download.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/download.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su envoltorio de CTA cuando existe el archivo de medios |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
File — file
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | file |
| Label | File |
| Categoría | content |
| Campos traducibles | title, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; url canónico compartido |
| Campos de medios/relación | Relación directa con medios mediante media_id, con reserva a una URL externa |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque productiza el renderizador de File ya publicado con un formulario de administración propio y deja explícita la propiedad compartida del origen del archivo entre la biblioteca de medios y la reserva de URL externa. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/file.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/file.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de tarjeta de archivo |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Video — video
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | video |
| Label | Video |
| Categoría | content |
| Campos traducibles | title, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; url canónico compartido |
| Campos de medios/relación | Relación directa con medios mediante media_id, con reserva segura a una URL externa |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque añade el formulario de administración y la ruta de guardado que faltaban, de modo que el vídeo subido, las URL seguras de proveedores externos, el texto visible traducido y el comportamiento público de reserva describen ahora el mismo contrato. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/video.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/video.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de tarjeta de vídeo |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Audio — audio
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | audio |
| Label | Audio |
| Categoría | content |
| Campos traducibles | title, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; url canónico compartido |
| Campos de medios/relación | Relación directa con medios mediante media_id, con reserva a una URL externa |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | Las escrituras de bloques incrementales, de plan de contenido y de administración aceptan medios audio con el tipo other y un tipo MIME audio/*; Se rechazan los medios incompatibles. La copia localizada y la representación segura sin controles vacíos siguen siendo nativas. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/audio.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/audio.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de tarjeta de audio |
| Pruebas / cobertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Table — table
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | table |
| Label | Table |
| Categoría | content |
| Campos traducibles | title, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | variant compartido; el renderizador también comprueba la reserva settings.rows |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | mostly clear |
| Carencias conocidas / notas | El bloque alinea la propiedad del título traducido y del texto de las filas con la arquitectura de traducción de texto existente y ahora ignora en la salida pública los árboles de hijos históricos arbitrarios; la vía heredada de reserva settings.rows sigue documentada. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/table.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/table.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su envoltorio de tabla |
| Pruebas / cobertura | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Quote — quote
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | quote |
| Label | Quote |
| Categoría | content |
| Campos traducibles | Ninguno en el registro actual |
| Campos compartidos/de ajustes | title, subtitle, content y variant canónicos |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El bloque deja de tratar Quote como un envoltorio de layout o contenedor en la salida pública, conservando a la vez las filas hijas guardadas en los árboles de bloques de administración. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/quote.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/quote.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de cita |
| Pruebas / cobertura | PublicRichContentTest, PageBuilderExperienceTest |
Hero — hero
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | hero |
| Label | Hero |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | Compartido media_id; compartido variant; settings.layout; settings.title_tag; settings.background_position; settings.background_overlay |
| Campos de medios/relación | Fondo opcional image vía directa media_id; bloques secundarios button_link para acciones |
| Comportamiento como hijo/contenedor | Contenedor; Hijos button_link (también se permite el modelo button heredado), sin recuento fijo |
| Estado actual | transitional |
| Carencias conocidas / notas | Hero es ahora un contrato principal publicado respaldado por fuentes. La copia de introducción es propiedad de la configuración regional, los botones de acción son elementos secundarios normales de button_link que poseen sus propias etiquetas y URL, y las imágenes de fondo de la biblioteca multimedia opcionales se representan a través de la primitiva de medios de fondo nativa WebBlocks UI. Las reservas heredadas de content siguen siendo legibles cuando los campos canónicos traducidos están vacíos. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/hero.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/hero.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz promocional <section> |
| Pruebas / cobertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Columns — columns
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | columns |
| Label | Columns |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | variant compartido |
| Campos de medios/relación | Bloques column_item hijos |
| Comportamiento como hijo/contenedor | Contenedor; solo hijos column_item |
| Estado actual | clear |
| Carencias conocidas / notas | Columns es ahora un bloque de contenido estructurado publicado y de primera clase. El texto de introducción pertenece a cada idioma, mientras que la variante, el orden de los hijos y las URL de los hijos siguen siendo compartidos. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/columns.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/columns.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz estructurada-content <section> |
| Pruebas / cobertura | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Column Item — column_item
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | column_item |
| Label | Column Item |
| Categoría | content |
| Campos traducibles | title, eyebrow como etiqueta de insignia, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | Canónico compartido url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone El artículo de columna |
| Campos de medios/relación | Relación con el columns padre |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | utiliza la composición WebBlocks UI wb-icon-card enviada para las variantes sencillas con íconos y card. Las ediciones locales actualizan la copia del elemento sin sobrescribir las URL compartidas, el icono, el tono, el tamaño del icono o el tono de la insignia. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/column_item.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/column_item.blade.php |
| Contrato de la raíz del renderizador | La raíz del elemento la determina el padre y varía según la variante de Columns |
| Pruebas / cobertura | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
CTA — cta
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | cta |
| Label | CTA |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; compartido variant; settings.background_position; settings.background_overlay |
| Campos de medios/relación | Fondo opcional image vía directa media_id; bloques secundarios button_link para acciones |
| Comportamiento como hijo/contenedor | Contenedor; Hijos button_link (también se permite el modelo button heredado), sin recuento fijo |
| Estado actual | clear |
| Carencias conocidas / notas | CTA es ahora un contrato promocional publicado con copia de propiedad local, botones de acción como elementos secundarios button_link normales, imágenes de fondo de biblioteca multimedia opcionales y un renderizador público propietario de la raíz. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/cta.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/cta.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz promocional <section> |
| Pruebas / cobertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Feature Grid — feature-grid
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | feature-grid |
| Label | Feature Grid |
| Categoría | content |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto; niño feature-item title, etiqueta de identificación y content |
| Campos compartidos/de ajustes | Estructura secundaria compartida, orden, enlaces, barras de íconos, tonos de íconos y tonos de insignias |
| Campos de medios/relación | Bloques feature-item hijos, con soporte compatible con el heredado column_item |
| Comportamiento como hijo/contenedor | Contenedor; los hijos permitidos son feature-item y column_item |
| Estado actual | transitional |
| Carencias conocidas / notas | Feature Grid es ahora un alias de compatibilidad publicado, porque tiene vías reales de administración y renderizado ya publicadas, pero sigue delegando de forma intencionada en el contrato de tarjetas de Columns. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/feature-grid.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/feature-grid.blade.php |
| Contrato de la raíz del renderizador | Delega en la presentación de tarjetas de Columns y sigue usando el envoltorio público genérico |
| Pruebas / cobertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Feature Item — feature-item
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | feature-item |
| Label | Feature Item |
| Categoría | content |
| Campos traducibles | title, eyebrow como etiqueta de insignia, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | Canónico compartido url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone |
| Campos de medios/relación | Relación con el feature-grid padre |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | transitional |
| Carencias conocidas / notas | Elemento de característica ahora es un contrato secundario de soporte publicado para Feature Grid y al mismo tiempo comparte las tarjetas de elementos de columna existentes y la representación del icono content. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/feature-item.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/feature-item.blade.php |
| Contrato de la raíz del renderizador | Delega en la presentación de tarjetas de Column Item |
| Pruebas / cobertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Diseño
Section — section
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | section |
| Label | Section |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | media_id compartido; settings.layout_name; settings.spacing; settings.background_position; settings.background_overlay |
| Campos de medios/relación | Imagen de fondo opcional mediante media_id directo; Los bloques secundarios siguen siendo contenido estructural. |
| Comportamiento como hijo/contenedor | Contenedor; sin lista blanca explícita de hijos |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 mantiene la sección layout orientada: la configuración compartida de layout permanece canónica, los medios de fondo opcionales utilizan el contrato de biblioteca multimedia estándar, poseen la raíz semántica <section> y no mueven la copia de cara al usuario a configuraciones arbitrarias. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/section.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/section.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <section> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Container — container
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | container |
| Label | Container |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.width; settings.flow |
| Campos de medios/relación | Solo bloques hijos |
| Comportamiento como hijo/contenedor | Contenedor; sin lista blanca explícita de hijos |
| Estado actual | clear |
| Carencias conocidas / notas | El contenedor es layout neutral cuando el flujo no está configurado o none; solo el Flow: Stack explícito agrega flujo secundario vertical. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/container.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/container.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz container <div> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Pila — stack
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | stack |
| Label | Pila |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.spacing |
| Campos de medios/relación | Solo bloques hijos |
| Comportamiento como hijo/contenedor | Contenedor; sin lista blanca explícita de hijos |
| Estado actual | clear |
| Carencias conocidas / notas | Mapas de flujo secundario verticales solo para las clases wb-stack y wb-stack-* enviadas. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/stack.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/stack.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz stack <div> |
| Pruebas / cobertura | StackSplitCatalogTest, StackSplitContractTest |
Dividir — split
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | split |
| Label | Dividir |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.gap; settings.items_alignment; settings.width |
| Campos de medios/relación | Exactamente dos bloques secundarios directos |
| Comportamiento como hijo/contenedor | Contenedor; no hay una lista blanca explícita de tipos de niños, pero el recuento directo de niños está limitado a dos |
| Estado actual | clear |
| Carencias conocidas / notas | El primer hijo directo crece y el segundo permanece en el tamaño del contenido. Se puede anidar una pila en cualquier lado. La interfaz de usuario fijada aún no tiene ningún modificador adaptable split-to-stack. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/split.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/split.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz split <div> |
| Pruebas / cobertura | StackSplitCatalogTest, StackSplitContractTest |
Cluster — cluster
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | cluster |
| Label | Cluster |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.gap; settings.alignment; settings.items_alignment; settings.wrap; settings.width |
| Campos de medios/relación | Solo bloques hijos |
| Comportamiento como hijo/contenedor | Contenedor; sin lista blanca explícita de hijos |
| Estado actual | clear |
| Carencias conocidas / notas | Los ajustes de layout compartidos siguen siendo explícitos y propiedad del renderizador, incluida la vía de composición existente compatible con la navbar (full-width, between, center, nowrap) sin añadir lógica específica de navbar. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/cluster.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/cluster.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz cluster <div> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Grid — grid
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | grid |
| Label | Grid |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.columns; settings.gap; settings.alternate_media_text_sections; settings.alternate_start |
| Campos de medios/relación | Solo bloques hijos |
| Comportamiento como hijo/contenedor | Contenedor; sin lista blanca explícita de hijos |
| Estado actual | clear |
| Carencias conocidas / notas | La configuración compartida de grid sigue siendo canónica. Las cuadrículas alternas de medios/texto mantienen el contenedor wb-grid-* enviado y reordenan los pares secundarios directos de medios/texto, incluidas las estructuras de sección deslizante más texto, según el contenido visual detectado. Las cuadrículas alternas hermanas bajo el mismo padre comparten una secuencia incluso cuando aparecen otros bloques entre ellos, y la primera cuadrícula alterna controla la dirección de inicio. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/grid.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/grid.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz grid <div> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Patrón
Content Header — content_header
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | content_header |
| Label | Content Header |
| Categoría | pattern |
| Campos traducibles | title, eyebrow como etiqueta de insignia, subtitle, meta mediante filas de traducción de texto |
| Campos compartidos/de ajustes | media_id compartido; settings.alignment, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone, settings.background_position, settings.background_overlay |
| Campos de medios/relación | Imagen de fondo opcional mediante media_id directo; meta se almacena como lista estructurada content |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | es un bloque content-shell pattern. Mantiene el title, la etiqueta de la insignia, la introducción y la copia de meta de propiedad local, siempre representa su title como H1, ignora cualquier valor de nivel de título heredado guardado en el momento de la renderización y mantiene compartidos la alineación, el slug del ícono, el tono del ícono, el tamaño del ícono, el tono de la insignia y los medios de fondo opcionales. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/content_header.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/content_header.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <header> El encabezado de contenido |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
Alert — alert
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | alert |
| Label | Alert |
| Categoría | pattern |
| Campos traducibles | title, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.variant |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La variante compartida y el texto traducido encajan sin problemas. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/alert.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/alert.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su alerta |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Navegación
Link List — link-list
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | link-list |
| Label | Link List |
| Categoría | navigation |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | Opcional settings.row_layout (indexado/apilado) y settings.list_frame (unido/tarjetas) |
| Campos de medios/relación | Bloques link-list-item hijos |
| Comportamiento como hijo/contenedor | Contenedor; solo hijos link-list-item |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 renderiza ahora el texto de introducción traducido existente por encima de la lista de enlaces pública, sin cambiar el comportamiento de los elementos hijos. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/link-list.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/link-list.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz .wb-link-list cuando existen filas secundarias, agregando wb-link-list--stacked y wb-link-list--cards para los estilos seleccionados. |
| Pruebas / cobertura | LinkListBlockTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Link List Item — link-list-item
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | link-list-item |
| Label | Link List Item |
| Categoría | navigation |
| Campos traducibles | Requerido title, opcional eyebrow como etiqueta de insignia, opcional subtitle, opcional content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | url compartido requerido, miniatura de media_id compartido opcional, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone opcionales |
| Campos de medios/relación | Medios en miniatura opcionales a través de la relación de bloque directo media_id; relación padre link-list |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La URL compartida con la copia de fila traducida es coherente. Los íconos opcionales utilizan slugs activos del catálogo content y se representan solo a través de clases seguras de íconos, tonos y tamaños. Una miniatura de imagen opcional se representa como wb-link-list-thumb en la única columna principal de la fila y reemplaza al ícono cuando ambos están configurados. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/link-list-item.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/link-list-item.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz de enlace de fila, agrega wb-link-list-item--media cuando se representa una miniatura o un ícono y omite el elemento de descripción cuando content está en blanco |
| Pruebas / cobertura | LinkListBlockTest, LinkListThumbnailTest, PageBuilderExperienceTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
TOC — toc
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | toc |
| Label | TOC |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | Solo el title canónico |
| Campos de medios/relación | Bloques header publicados en la misma ranura con anclajes válidos |
| Comportamiento como hijo/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite la colocación de nuevos hijos |
| Estado actual | clear |
| Carencias conocidas / notas | TOC es un tipo de bloque del sistema. Escanea solo la ranura en la que está colocado, no toda la página, recorrida en el orden de los documentos y ya no trata los bloques secundarios arbitrarios como TOC público content. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/toc.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/toc.blade.php |
| Contrato de la raíz del renderizador | Posee su envoltorio de TOC generado cuando existen encabezados |
| Pruebas / cobertura | PublicRichContentTest, PageBuilderExperienceTest, TocHeadingScanTest |
Breadcrumb — breadcrumb
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | breadcrumb |
| Label | Breadcrumb |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.home_label; settings.include_current compartidos |
| Campos de medios/relación | Contexto de breadcrumb de la página, el sitio y el idioma (locale) actuales |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 conserva los ajustes de breadcrumb expuestos a través de la vía compartida BlockRequest, de modo que el comportamiento del formulario coincide ahora con la persistencia y el renderizado. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/breadcrumb.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/breadcrumb.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <nav.wb-breadcrumb> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest |
Header Actions — header-actions
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | header-actions |
| Label | Header Actions |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.show_mode_toggle compartido; settings.show_accent_toggle; settings.show_search; settings.show_language_switcher |
| Campos de medios/relación | Ruta de búsqueda más hooks de interfaz del lado del cliente |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | Bloque de utilidad del sistema; por diseño no posee traducciones. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/header-actions.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/header-actions.blade.php |
| Contrato de la raíz del renderizador | Posee únicamente su cluster de acciones interno |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest |
Navbar — sticky-navbar
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sticky-navbar |
| Label | Navbar |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.sticky_mode |
| Campos de medios/relación | Bloques hijos anidados de la navbar |
| Comportamiento como hijo/contenedor | Contenedor; los hijos permitidos son container, cluster, header, plain_text, rich-text, button_link, navbar-brand, navbar-navigation, header-actions, search-form |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 alinea el slug persistido sticky-navbar con Block::ownsPublicRoot(), de modo que Navbar ya no recibe un envoltorio de bloque público genérico adicional. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sticky-navbar.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sticky-navbar.blade.php |
| Contrato de la raíz del renderizador | El renderizador público posee la raíz externa <nav.wb-navbar> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, BlockTypePhaseThreeContractsTest |
Navbar Brand — navbar-brand
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | navbar-brand |
| Label | Navbar Brand |
| Categoría | navigation |
| Campos traducibles | title, subtitle mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.url; settings.target; settings.aria_label compartidos |
| Campos de medios/relación | Medio de logotipo compartido mediante media_id; reserva a la URL de inicio del sitio |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 alinea el comportamiento de guardado de la administración con el contrato del renderizador distribuido: la URL guardada explícita tiene prioridad; en su defecto se utiliza la ruta de inicio del sitio actual cuando está disponible y, por último, / como reserva segura final. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/navbar-brand.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/navbar-brand.blade.php |
| Contrato de la raíz del renderizador | Posee únicamente el enlace de marca interno |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Navbar Navigation — navbar-navigation
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | navbar-navigation |
| Label | Navbar Navigation |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | Canonical title como etiqueta ARIA compartida; settings.menu_key; settings.active_indicator; settings.active_matching |
| Campos de medios/relación | Árbol de menú NavigationItem compartido |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | El enlace de menú compartido, la etiqueta ARIA, el indicador activo y la coincidencia activa son comportamientos actuales propiedad del producto. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/navbar-navigation.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/navbar-navigation.blade.php |
| Contrato de la raíz del renderizador | Posee únicamente el contenedor interno navigation y asigna la configuración del indicador activo a las clases activas de la barra de navegación WebBlocks UI |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest |
Sidebar Brand — sidebar-brand
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sidebar-brand |
| Label | Sidebar Brand |
| Categoría | navigation |
| Campos traducibles | title, subtitle mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.url; settings.target; settings.aria_label compartidos |
| Campos de medios/relación | Medio de logotipo compartido mediante media_id; reserva a la URL de inicio del sitio |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 otorga a Sidebar Brand el mismo orden de reserva del nombre accesible cuando solo hay logotipo que Navbar Brand, y el mismo contrato conservador de reserva de la URL compartida. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sidebar-brand.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sidebar-brand.blade.php |
| Contrato de la raíz del renderizador | Posee únicamente el enlace de marca interno |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Sidebar Navigation — sidebar-navigation
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sidebar-navigation |
| Label | Sidebar Navigation |
| Categoría | navigation |
| Campos traducibles | title mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.menu_key; settings.layout_name; settings.show_icons; settings.active_matching compartidos |
| Campos de medios/relación | El árbol NavigationItem del CMS o bien bloques hijos manuales |
| Comportamiento como hijo/contenedor | Contenedor; solo hijos sidebar-nav-item y sidebar-nav-group |
| Estado actual | clear |
| Carencias conocidas / notas | Tanto los ajustes compartidos del modo de menú como el modo de hijos manuales son explícitos. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sidebar-navigation.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sidebar-navigation.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <nav.wb-sidebar-nav> |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Item — sidebar-nav-item
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sidebar-nav-item |
| Label | Sidebar Nav Item |
| Categoría | navigation |
| Campos traducibles | title mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.url; settings.target; settings.icon; settings.active_mode; settings.manual_active compartidos |
| Campos de medios/relación | Slug compartido del catálogo de iconos; relación con la barra lateral padre |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | El comportamiento de enlace compartido y la etiqueta traducida encajan bien. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sidebar-nav-item.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sidebar-nav-item.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su enlace de barra lateral |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Group — sidebar-nav-group
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sidebar-nav-group |
| Label | Sidebar Nav Group |
| Categoría | navigation |
| Campos traducibles | title mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.icon; settings.initially_open; settings.layout_name compartidos |
| Campos de medios/relación | Bloques sidebar-nav-item hijos; slug del catálogo de iconos |
| Comportamiento como hijo/contenedor | Contenedor; solo hijos sidebar-nav-item |
| Estado actual | clear |
| Carencias conocidas / notas | La fase 3 mantiene el contrato del envoltorio nav-group distribuido de WebBlocks UI, mientras que los enlaces hijos manuales anidados reutilizan ahora la misma semántica de elemento de barra lateral para href, target, icono y salida del estado activo. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sidebar-nav-group.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sidebar-nav-group.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz .wb-nav-group |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Search Form — search-form
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | search-form |
| Label | Search Form |
| Categoría | navigation |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | variant; settings.show_button compartidos |
| Campos de medios/relación | Contexto de la ruta de búsqueda, del sitio y del idioma (locale) |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | Los ajustes compartidos de visualización del botón y las etiquetas traducidas son explícitos. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/search-form.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/search-form.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz <form role="search"> |
| Pruebas / cobertura | SearchFormTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Footer — sidebar-footer
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | sidebar-footer |
| Label | Sidebar Footer |
| Categoría | navigation |
| Campos traducibles | title, subtitle, content mediante filas de traducción de texto |
| Campos compartidos/de ajustes | settings.variant compartido |
| Campos de medios/relación | Ninguno |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | La variante compartida con texto traducido es sencilla. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/sidebar-footer.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/sidebar-footer.blade.php |
| Contrato de la raíz del renderizador | Posee la raíz de su bloque de pie interno |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Formularios
Contact Form — contact_form
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | contact_form |
| Label | Contact Form |
| Categoría | form |
| Campos traducibles | title, content, submit_label, success_message mediante filas de traducción del formulario de contacto |
| Campos compartidos/de ajustes | settings.recipient_email; settings.send_email_notification; settings.store_submissions compartidos |
| Campos de medios/relación | Los envíos de contact_messages se relacionan de vuelta con el bloque y la página |
| Comportamiento como hijo/contenedor | No es un contenedor |
| Estado actual | clear |
| Carencias conocidas / notas | El procesador emite un campo de verificación antispam generado oculto propiedad del CMS que no es una entrada normal del visitante y no debe crearse manualmente. Los envíos de campos de verificación completados devuelven un éxito genérico sin almacenamiento ni notificación. Los mensajes legítimos se almacenan antes de la notificación, el spam calificado se retiene para revisión del administrador, el respaldo del destinatario se bloquea, sitio, CONTACT_RECIPIENT_EMAIL, luego MAIL_FROM_ADDRESS, y las páginas de contacto no deben usar Trusted HTML/raw form/mailto: como sustitutos. Los planes Internal Content API content conservan submit_label y success_message, y la representación local en alemán utiliza etiquetas form predeterminadas en alemán cuando no hay copia personalizada. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/contact_form.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/contact_form.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz section.wb-card y emite un formulario nativo protegido por CSRF que envía a /contact-messages |
| Pruebas / cobertura | ContactFormModuleTest, InternalContentApiTest, ContactMailDiagnoseCommandTest |
Avanzado
HTML (Trusted) — html
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | html |
| Etiqueta | HTML (Trusted) |
| Categoría | advanced |
| Campos traducibles | Ninguno |
| Campos compartidos/de configuración | El content HTML de confianza canónico |
| Campos de medios/relación | Los registros públicos de overlay y de final de body pueden recibir fragmentos extraídos |
| Comportamiento de hijos/contenedor | No es un contenedor; se conservan las filas hijas históricas, pero no se admite colocar nuevos hijos |
| Estado actual | mostly clear |
| Carencias conocidas / notas | La fase 3 deja de tratar Trusted HTML como un envoltorio contenedor de hijos público. El marcado de confianza todavía puede afectar a la salida compartida de overlay o de final de body más allá de la raíz visible. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/html.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/html.blade.php |
| Contrato de raíz del renderizador | Envuelve el marcado de confianza en un <div> y también puede emitir contenido de superposición o de fin del cuerpo fuera de esa raíz. |
| Pruebas / cobertura | PublicEditorialBlocksRenderingTest, PublicRichContentTest, PageBuilderExperienceTest |
Contratos adicionales publicados
Control deslizante — slider
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | slider |
| Label | Control deslizante |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.layout_name; settings.height; settings.min_height; settings.aspect_ratio; settings.transition; settings.interval_ms; settings.autoplay; settings.pause_on_hover; settings.show_arrows; settings.show_dots; settings.loop; settings.swipe; settings.keyboard; settings.overlay; settings.content_position; settings.content_width; settings.text_color; settings.background_fit |
| Campos de medios/relación | Los bloques secundarios slide son la relación principal. Slider en sí no admite la propiedad directa de los medios. |
| Comportamiento como hijo/contenedor | Compatible con contenedores. El tipo de niño permitido es slide. |
| Estado actual | clear |
| Carencias conocidas / notas | Ninguno |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/slider.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/slider.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública <section data-wb-slider>, pista interna, controles y punto navigation. |
| Pruebas / cobertura | Prueba de posición de contenido del control deslizante |
Diapositiva — slide
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | slide |
| Label | Diapositiva |
| Categoría | layout |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | media_id; settings.layout_name; settings.aria_label; settings.background_position; settings.background_overlay; settings.content_position; settings.content_width; settings.text_color; settings.background_fit; mobile_media_id |
| Campos de medios/relación | El medio de fondo opcional slide se posee a través de la relación de bloque directo media_id. Los bloques secundarios son la relación visible content.; mobile_media_id asigna un registro de la biblioteca multimedia de imágenes a través de block_media.mobile_image. Envíe nulo a clear la anulación. |
| Comportamiento como hijo/contenedor | Compatible con contenedores. Los tipos de niños no están restringidos explícitamente en el asistente actual. |
| Estado actual | clear |
| Carencias conocidas / notas | Ninguno |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/slide.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/slide.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública <article class="wb-slide"> y delega copia/UI visible a bloques secundarios anidados. En anchos de ventana gráfica de hasta 768 px, una imagen móvil pública anula el objeto visual predeterminado a través de la imagen/fuente o la imagen de fondo; las anulaciones ausentes o no disponibles utilizan la imagen predeterminada. |
| Pruebas / cobertura | Prueba de posición de contenido del control deslizante |
Navegación automática — navigation-auto
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | navigation-auto |
| Label | Navegación automática |
| Categoría | navigation |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.menu_key |
| Campos de medios/relación | El sitio actual y el contexto local resuelven el árbol de menús renderizado en el momento del renderizado. |
| Comportamiento como hijo/contenedor | No es un contenedor. Los elementos del menú provienen de registros de navegación, no de bloques secundarios. |
| Estado actual | clear |
| Carencias conocidas / notas | Ninguno |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/navigation-auto.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/navigation-auto.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública <nav class="wb-stack wb-gap-2" data-wb-menu-key="..."> y representa el árbol de menú visible como listas <ul> anidadas de anclajes wb-link. |
| Pruebas / cobertura | PruebaCtaApi Administrada Clasificación |
título — rating
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | rating |
| Label | título |
| Categoría | system |
| Campos traducibles | ; subtítulo |
| Campos compartidos/de ajustes | settings.scale; settings.allow_change; settings.show_summary; settings.data_scope |
| Campos de medios/relación | La página actual, el sitio, el bloque, el hash de visitante y la URL de origen se registran en las filas rating. |
| Comportamiento como hijo/contenedor | No es un contenedor en el contrato actual. |
| Estado actual | clear |
| Carencias conocidas / notas | Ninguno |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/rating.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/rating.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública section.wb-card.wb-rating, genera una copia de título/subtítulo localizado opcional, un promedio wb-rating-stars de solo lectura y un formulario de estrella wb-rating-input sin JS que publica cada envío en /content-ratings. |
| Pruebas / cobertura | Prueba de gestión de compromiso |
Comentarios — comments
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | comments |
| Label | Comentarios |
| Categoría | system |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.form_enabled; settings.show_approved; settings.show_author_name; settings.sort_order; settings.data_scope |
| Campos de medios/relación | La página actual, el sitio, el bloque, el hash de visitante y la URL de origen se registran en las filas de comentarios. |
| Comportamiento como hijo/contenedor | No es un contenedor en el contrato actual. |
| Estado actual | clear |
| Carencias conocidas / notas | Ninguno |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/comments.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/comments.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública section.wb-card, genera comments aprobado y emite un formulario de comentarios nativo protegido por CSRF que se publica en /comment-entries. |
| Pruebas / cobertura | Prueba de gestión de compromiso |
Lista de páginas — page-list
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | page-list |
| Label | Lista de páginas |
| Categoría | content |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.scope; settings.page_type; settings.path_prefix; settings.sort; settings.limit; settings.layout; settings.columns; settings.show_thumbnail; settings.show_description; settings.exclude_current; settings.clickable_card |
| Campos de medios/relación | No hay medios de bloqueo. Las miniaturas se resuelven a partir de cada traducción de página enumerada en el momento del procesamiento. |
| Comportamiento como hijo/contenedor | No es un contenedor. Las filas provienen de una consulta de página, no de bloques secundarios. |
| Estado actual | clear |
| Carencias conocidas / notas | Las descripciones de tarjetas y las miniaturas reutilizan la descripción de SEO y la imagen de Open Graph, que se crean para búsqueda y redes sociales en lugar de para una tarjeta. Se planean configuraciones de páginas dedicadas list_excerpt y list_image. Aplicación |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/page-list.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/page-list.blade.php |
| Contrato de la raíz del renderizador | Posee su raíz pública: un wb-grid de artículos wb-card o anclajes de tarjeta completa en las tarjetas layout, o un wb-link-list de anclajes wb-link-list-item en los enlaces layout. No representa nada cuando la consulta no devuelve páginas. |
| Pruebas / cobertura | ListaPáginaBloqueRenderTest |
— application
Contenido y comportamiento
| Campo | Contrato |
|---|---|
| Slug | application |
| Label | |
| Categoría | content |
| Campos traducibles | Ninguno |
| Campos compartidos/de ajustes | settings.application_handle; settings.application_settings; settings.width; settings.loading; settings.aspect_ratio; settings.min_height; settings.show_loading_state; settings.show_failure_state |
| Campos de medios/relación | No hay relación directa con CMS Media. Los activos ejecutables application son archivos propiedad del registro, no medios editoriales. |
| Comportamiento como hijo/contenedor | No es un contenedor. El tiempo de ejecución application posee su DOM interno. |
| Estado actual | clear |
| Carencias conocidas / notas | El código de la aplicación y la gestión del registro permanecen separados de la ubicación editorial; el bloque selecciona una definición habilitada y valida su configuración. |
Fuentes y pruebas
| Fuente | Contrato |
|---|---|
| Origen del formulario de administración | resources/views/admin/blocks/types/application.blade.php |
| Origen del renderizador público | resources/views/pages/partials/blocks/application.blade.php |
| Contrato de la raíz del renderizador | Posee una raíz .wb-application. Las definiciones en línea reciben un elemento de montaje seguro; Las definiciones de iframe reciben un contenedor de iframe propiedad del CMS. Las definiciones faltantes o no válidas nunca interrumpen la página circundante. |
| Pruebas / cobertura | Prueba de aplicaciones integradas |
Visión general de la validación y la persistencia
Los tipos de bloques publicados no tienen cada uno su propia clase de solicitud dedicada en la actualidad.
WebBlocks\Cms\Http\Requests\Admin\BlockRequestes la ruta de solicitud de edición compartida- Las ramas específicas de slug dentro de esa solicitud normalizan los campos en el almacenamiento canónico actual
WebBlocks\Cms\Support\Blocks\BlockPayloadWriterpersiste el carga útil de bloque normalizadaWebBlocks\Cms\Support\Blocks\BlockTranslationWritermueve campos de propiedad local a filas de traducción para familias registradasWebBlocks\Cms\Support\Blocks\BlockTranslationResolverresuelve valores traducidos o alternativos en una instancia de bloque renderizable
Comportamiento De Compatibilidad
Los ajustes heredados de Gallery y Table pueden seguir siendo legibles cuando falten traducciones canónicas o medios ordenados. Los valores alternativos históricos no son el formato preferido de creación. Use la matriz actual.
Las filas de borrador y los identificadores de compatibilidad exclusivos del renderer no son contratos publicados. El descubrimiento y el diálogo pueden indicar que no existe contrato distribuido.
Adiciones de medios y editores hasta 1.94.2
Desde CMS 1.91.0, los elementos de diapositiva, imagen, héroe, sección, tarjeta, CTA, encabezado de contenido y lista de enlaces admiten mobile_media_id opcional en planes y actualizaciones de bloques existentes. La relación utiliza block_media.role = mobile_image, se comparte entre configuraciones regionales y reemplaza la imagen predeterminada de hasta 768 px con una alternativa cuando no está disponible. No introduce subtítulos ni texto alternativo móvil separados. Ver Variantes de imágenes multimedia.
Desde 1.91.1, Slide y Slider ofrecen nueve posiciones de contenido: centro, centro izquierda, centro derecha, arriba a la izquierda, arriba al centro, arriba a la derecha, abajo a la izquierda, abajo al centro y abajo a la derecha. Estos valores los comparten el administrador, la API y el renderizador.
Desde 1.93.0, el editor de texto enriquecido tiene deshacer/rehacer por campo, restauración de selección, modo de enfoque y recuento de palabras. Los títulos pegados y el texto de las celdas de la tabla permanecen como párrafos de cuerpo seguros; Los encabezados semánticos, las tablas y los medios pertenecen a bloques dedicados. Esto no agrega una nueva variante de texto enriquecido almacenado ni permite el marcado ejecutable. Ver Texto enriquecido.