Contratti dei tipi di blocco
Scopo e ambito
Il riferimento descrive blocchi pubblicati, campi modificabili, traduzioni, regole dei figli e rendering pubblico. L’amministrazione mostra il contratto in sola lettura; non definisce schemi personalizzati o nuovi moduli di modifica.
Il sistema di plugin dei plugin aggiunge hook di blocco per plugin di sola dichiarazione tramite PluginBlockTypeDefinition, PluginBlockPackDefinition e PluginBlockRegistry. I plugin abilitati possono esporre handle di proprietà del plugin come analytics-tools::score-card ai fini della scoperta, ma tali dichiarazioni non sostituiscono i contratti dei blocchi core distribuiti, le view dei blocchi core, i seeder core o i servizi di modifica dei blocchi. Gli handle non qualificati in stile core come hero restano di proprietà del core e vengono rifiutati nelle dichiarazioni dei plugin.
Definizione
A Block Type Contract è l'accordo tecnico attuale sul comportamento di un tipo di blocco tra i livelli CMS:
- Identità catalogo: slug, etichetta, categoria, stato e metadati di sistema o contenitore
- origine modulo amministratore: quale parziale Blade attualmente modifica il blocco e quali campi espone
- convalida e richiesta gestione: come
WebBlocks\Cms\Http\Requests\Admin\BlockRequestattualmente normalizza e convalida i payload dei blocchi - proprietà dello storage: quali valori risiedono su
blocks, righe di traduzione dedicate,block_mediao record correlati - proprietà della traduzione: quali campi rivolti all'utente sono di proprietà delle impostazioni locali
- proprietà condivisa: quali impostazioni o relazioni rimangono condivise tra le impostazioni locali
- proprietà dei media o delle relazioni: diretta
media_id, ordinatablock_media, ricerche di navigazione o relazioni sulla stessa pagina - supporto figlio: se il blocco è un contenitore e se i tipi figlio sono limitati
- origine renderer pubblica: quale parziale Blade pubblico esegue il rendering del blocco oggi
- contratto root del renderer: se il blocco possiede il markup root pubblico o si basa sul wrapper generico percorso
- portabilità e revisioni: se la forma di archiviazione corrente deve continuare a viaggiare attraverso revisioni, clonazione, esportazione/importazione e promozione
- test e lacune: copertura focalizzata nota, comportamento poco chiaro o debito di compatibilità
Termini del contratto attuale
Termini di stato usati di seguito:
clear: form di amministrazione, gestione delle richieste, storage e renderer sono sostanzialmente allineatimostly clear: il contratto attuale è comprensibile ma presenta un'avvertenza rilevantetransitional: il contratto attuale mantiene intenzionalmente un percorso di compatibilità o uno schema di proprietà mistoneeds review: confermare il contratto installato prima di basarsi sul comportamentolegacy/fallback: il comportamento pubblicato dipende da un percorso di fallback o di compatibilità
Regole di proprietà dello storage
Il lavoro contrattuale attuale e futuro dovrebbe mantenere esplicite queste regole di proprietà:
- La copia rivolta all'utente appartiene alle righe di traduzione quando il blocco è di proprietà locale
- I dati operativi o di impostazione condivisi appartengono alle impostazioni del blocco condiviso o alle relazioni esplicite
- i media dovrebbero utilizzare
media_idoblock_mediapercorsi di proprietà ove applicabile - Evita di spostare i contenuti rivolti all'utente in impostazioni condivise arbitrarie
- mantieni documentati i percorsi di archiviazione di compatibilità quando influiscono ancora sull'output o sulle importazioni pubbliche
Da CMS 1.98.6, il modello settings/campo API compatibile è supportato da record relazionali. I campi principali noti utilizzano colonne di aspetto tipizzato finito, media, navigazione e contenuto. Le associazioni di contenuto, la configurazione della raccolta e i valori delle istanze dell'applicazione hanno record separati; i nodi digitati mantengono la struttura, l'ordinamento e le estensioni storiche/plugin. CMS 1.98.8 ha rimosso le copie di rollback temporanee JSON; SQL è autorevole. L'editor, la proprietà della traduzione, i payload API e i metodi di rendering mantengono i contratti esistenti; la migrazione dell'archiviazione non sposta la copia di proprietà locale nelle impostazioni condivise.
Convalida delle impostazioni di modifica
CMS 1.105.9 aggiunge il rilevamento authoring_settings_schema revisionato per tutti i 55 blocchi principali pubblicati. Leggere i flag separati di creazione, PATCH e scrittura dell'amministratore prima di fornire un campo. I valori nuovi o modificati devono soddisfare i tipi, le enumerazioni e i limiti dichiarati; i campi non supportati restituiscono errori di convalida invece di essere accettati o cancellati silenziosamente. Questo rimane un contratto di proprietà del codice, non uno schema modificabile o un generatore di moduli generato.
I valori storici invariati sopravvivono a modifiche non correlate e clonazione, gestione temporanea e revisioni attendibili. I nuovi blocchi e le sostituzioni complete devono superare la convalida corrente. I plugin senza schema mantengono il comportamento esistente; gli schemi scalari dei plugin opzionali non sostituiscono supporti, applicazioni o validatori Dynamic Content. HTML rimane solo umano.
Vedere Schemi delle impostazioni di modifica per blocco per i metadati delle operazioni, le regole di compatibilità e il comando di compatibilità di sola lettura webblocks:blocks:audit-settings. La verifica separata del catalogo seguente controlla moduli e renderer distribuiti, non le impostazioni salvate.
Sorgenti distribuite
Il riferimento usa catalogo, moduli e renderer distribuiti.
- origine catalogo:
src/Support/Blocks/CoreBlockTypeCatalogSyncer.php - normalizzazione richiesta di modifica blocco:
src/Http/Requests/Admin/BlockRequest.php - helper persistenza:
src/Support/Blocks/BlockPayloadWriter.php,src/Support/Blocks/BlockTranslationWriter.php,src/Support/Blocks/BlockTranslationResolver.php - registro di traduzione:
src/Support/Blocks/BlockTranslationRegistry.php - moduli di amministrazione:
resources/views/admin/blocks/types/*.blade.php - renderer pubblici:
resources/views/pages/partials/blocks/*.blade.php - riferimenti di copertura: catalogo dei blocchi, rendering, traduzione e test specifici degli slug in
tests/Feature/
Tipi di blocchi principali pubblicati attualmente documentati qui: 55.
Riconciliazione catalogo: WebBlocks CMS 1.105.8. La tabella copre tutte le 55 definizioni principali pubblicate; sette definizioni aggiuntive rimangono inedite. Le note sulla fase successiva riportate di seguito sono documenti storici, non un secondo conteggio attuale del catalogo.
Comando di audit
Operatori e sviluppatori possono eseguire questo controllo del catalogo in sola lettura:
php artisan block-types:contracts-audit
php artisan block-types:contracts-audit --json
Il comando è in sola lettura.
- non modifica il database
- non dipende dal contenuto del sito installato
- legge le definizioni del catalogo core distribuito
- verifica la presenza dei file del form di amministrazione e del renderer pubblico distribuiti
- riporta i metadati della famiglia di traduzione e il supporto di base per i contenitori
Il comando è un supporto di aggiornamento per rilevare scostamenti di catalogo e di presenza dei file. Non sostituisce le note di contratto più complete contenute in questo documento.
Vista Amministrativa Di Sola Lettura
Aprire i dettagli in sola lettura in Admin -> System -> Block Types.
- ogni riga può aprire un modale
Block Type Contract - il modale è solo informativo e non invia aggiornamenti
- mostra i dettagli di catalogo, form di amministrazione, storage, traduzione, media o relazioni, figli, renderer e lacune a partire dal codice distribuito
- non trasforma l'amministrazione di Block Types in un editor di schemi o in un costruttore di form
- i tipi di blocco personalizzati o in bozza possono comunque aprire il modale, ma possono mostrare
No shipped contract is documented for this block type yet.quando non è definito alcun contratto core
Matrice dei contratti dei blocchi pubblicati
Contenuto
Header — header
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | header |
| Label | Header |
| Categoria | content |
| Campi traducibili | title tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | variant livello di intestazione; settings.alignment; ancora condivisa in settings.anchor con ripiego legacy su url |
| Campi media/relazione | Il TOC dello stesso slot legge i blocchi di intestazione ancorati |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Blocco di intestazione canonico; il contratto dell'ancora condivisa è chiaro, ma conserva ancora il comportamento di ripiego legacy su url. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/header.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/header.blade.php |
| Contratto della radice del renderer | Possiede il proprio elemento di intestazione radice |
| Test / copertura | SyncCoreBlockTypesCommandTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Plain Text — plain_text
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | plain_text |
| Label | Plain Text |
| Categoria | content |
| Campi traducibili | content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.alignment |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Semplice primitiva di testo corrente tradotto. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/plain_text.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/plain_text.blade.php |
| Contratto della radice del renderer | Possiede la radice <p> |
| Test / copertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Rich Text — rich-text
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | rich-text |
| Label | Rich Text |
| Categoria | content |
| Campi traducibili | content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | Nessuno |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | L'archiviazione sicura dell'HTML e la titolarità della traduzione sono chiare. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/rich-text.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/rich-text.blade.php |
| Contratto della radice del renderer | Possiede la propria radice .wb-rich-text quando è presente del contenuto |
| Test / copertura | RichTextBlockTest, PublicRichContentTest, BlockTranslationIntegrityTest |
Code — code
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | code |
| Label | Code |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.language |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco allinea il titolo tradotto del codice, l'etichetta e il corpo dello snippet all'architettura di traduzione testuale esistente e ora ignora nell'output pubblico gli alberi di figli storici arbitrari. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/code.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/code.blade.php |
| Contratto della radice del renderer | Possiede la radice <pre><code> |
| Test / copertura | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Button Link — button_link
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | button_link |
| Label | Button Link |
| Categoria | content |
| Campi traducibili | l'etichetta title tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.url; settings.target; variant condiviso |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | L'URL e il target condivisi, insieme all'etichetta tradotta, sono coerenti. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/button_link.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/button_link.blade.php |
| Contratto della radice del renderer | Possiede la radice <a.wb-btn> |
| Test / copertura | PublicEditorialBlocksRenderingTest |
Card — card
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | card |
| Label | Card |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Condiviso media_id; settings.layout_name; settings.background_position; settings.background_overlay; settings.url e settings.target opzionali |
| Campi media/relazione | Sfondo opzionale image tramite diretto media_id; i blocchi della regione figlio definiscono la struttura |
| Comportamento come figlio/contenitore | Contenitore; gli unici figli diretti ammessi sono card_header, card_body e card_footer |
| Stato attuale | clear |
| Lacune note / note | Card è una scocca componibile. Il suo URL intero card opzionale è sicuro e semantico; gli editor non devono inserire controlli interattivi nidificati nelle schede collegate. Supporta gli sfondi della libreria multimediale e mantiene un fallback legacy minimo per le righe più vecchie senza regioni della scheda. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/card.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/card.blade.php |
| Contratto della radice del renderer | Possiede la radice <article class="wb-card"> o una radice semantica <a class="wb-card wb-no-decoration"> quando collegata |
| Test / copertura | CardClickableRenderTest, PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, MediaVisualBlockContractsTest |
Card Header — card_header
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | card_header |
| Label | Card Header |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name, settings.icon_slug, settings.icon_tone, settings.icon_size |
| Campi media/relazione | Solo la relazione con il card padre |
| Comportamento come figlio/contenitore | Contenitore; può essere collocato solo sotto card; non sono ammessi figli di regione card |
| Stato attuale | clear |
| Lacune note / note | Blocco regione scheda componibile per header content. Le icone opzionali utilizzano slug del catalogo content attivi ed eseguono il rendering solo tramite classi di icone, tono e dimensioni sicure. L'intestazione della scheda non ha una copia del badge e pertanto non espone il tono del badge. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/card_header.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/card_header.blade.php |
| Contratto della radice del renderer | Possiede la radice <div class="wb-card-header"> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Card Body — card_body
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | card_body |
| Label | Card Body |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name |
| Campi media/relazione | Solo la relazione con il card padre |
| Comportamento come figlio/contenitore | Contenitore; può essere collocato solo sotto card; non sono ammessi figli di regione card |
| Stato attuale | clear |
| Lacune note / note | Blocco di regione Card componibile per il contenuto principale. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/card_body.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/card_body.blade.php |
| Contratto della radice del renderer | Possiede la radice <div class="wb-card-body"> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Card Footer — card_footer
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | card_footer |
| Label | Card Footer |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name |
| Campi media/relazione | Solo la relazione con il card padre |
| Comportamento come figlio/contenitore | Contenitore; può essere collocato solo sotto card; non sono ammessi figli di regione card |
| Stato attuale | clear |
| Lacune note / note | Blocco di regione Card componibile per il piè di pagina o i contenuti di azione. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/card_footer.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/card_footer.blade.php |
| Contratto della radice del renderer | Possiede la radice <div class="wb-card-footer"> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Stat Card — stat-card
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | stat-card |
| Label | Stat Card |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | L'url canonico resta condiviso sulla riga del blocco |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Il blocco mantiene il campo URL facoltativo esistente e ora rende un semplice link pubblico quando è presente. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/stat-card.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/stat-card.blade.php |
| Contratto della radice del renderer | Possiede la propria radice stat-card |
| Test / copertura | StatCardTest, BlockTranslationIntegrityTest |
Image — image
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | image |
| Label | Image |
| Categoria | content |
| Campi traducibili | caption, alt text tramite righe di traduzione delle immagini |
| Campi condivisi/di impostazione | Condiviso media_id; canonica condivisa url; settings.viewer_enabled; settings.viewer_group |
| Campi media/relazione | Relazione diretta con il media immagine tramite media_id |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Didascalia e alt text sono di proprietà delle impostazioni locali mentre i contenuti multimediali, l'URL di collegamento facoltativo e il raggruppamento dei visualizzatori rimangono condivisi. I collegamenti espliciti hanno la precedenza; altrimenti abilitato I blocchi immagine con lo stesso gruppo condividono il visualizzatore galleria CMS esistente senza modificare la composizione della pagina. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/image.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/image.blade.php |
| Contratto della radice del renderer | Possiede la radice semantica <figure> quando il supporto esiste e può registrarsi con un visualizzatore di gallerie raggruppato |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, BlockTranslationIntegrityTest, PublicOverlayRegistryTest |
Gallery — gallery
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | gallery |
| Label | Gallery |
| Categoria | content |
| Campi traducibili | Per ciascun elemento della galleria: alt_text, caption, overlay_title e overlay_text tramite block_gallery_item_translations |
| Campi condivisi/di impostazione | Impostazioni di presentazione gallery condivise più visualizzatore opzionale title e relazioni articolo ordinato block_media gallery |
| Campi media/relazione | Righe block_media ordinate con ruolo gallery_item; i testi degli elementi della galleria specifici della lingua risiedono in block_gallery_item_translations; possono ancora esistere valori legacy title/subtitle salvati sul blocco, ma il rendering pubblico li ignora |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Galleria è ora un blocco di raccolta multimediale. Il normale modulo di amministrazione utilizza un editor compatto di righe di elenco invece del vecchio grid per le risorse selezionate. Il suo selettore Add Gallery Items nidificato rimane sul contratto di amministrazione condiviso #wb-overlay-root, quindi WebBlocks UI possiede il ciclo di vita modale in pila e gli elenchi di risultati lunghi e compatti mantengono l'altezza naturale delle righe mentre il corpo modale rimane il contenitore di scorrimento. Le varianti pubbliche sono distinte: grid mantiene celle uguali, masonry utilizza CSS columns con altezza naturale image e collage mantiene la prima composizione in primo piano. I valori masonary salvati legacy sono ancora accettati e normalizzati nel percorso canonico masonry. La Galleria non possiede più l'intestazione introduttiva o l'output del paragrafo; gli editor devono posizionare content_header più plain_text o rich-text prima della Galleria quando è necessaria la copia della sezione. Il visualizzatore opzionale title etichetta solo il lightbox modale header. Gli elementi di fallback basati su impostazioni legacy rimangono leggibili per content precedenti. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/gallery.blade.php più resources/views/admin/blocks/types/partials/gallery-items-editor.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/gallery.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio wrapper di galleria e registra un'unica modale viewer sotto #wb-overlay-root quando il lightbox è attivo |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, PageBuilderExperienceTest, SiteCloneServiceTest, SiteExportImportTest, SitePromotionTest, ReconstructionIntegrityTest, SharedSlotRevisionTest |
Download — download
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | download |
| Label | Download |
| Categoria | content |
| Campi traducibili | title, subtitle tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | media_id condiviso; variant condiviso |
| Campi media/relazione | Relazione diretta con il file di download tramite media_id |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco mantiene condivisi il media di download selezionato e la variante del pulsante, spostando l'etichetta visibile e il testo di supporto sul percorso di traduzione testuale esistente. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/download.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/download.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio wrapper CTA quando il media esiste |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
File — file
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | file |
| Label | File |
| Categoria | content |
| Campi traducibili | title, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | media_id condiviso; url canonico condiviso |
| Campi media/relazione | Relazione diretta con il media tramite media_id, con ripiego su URL esterno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco rende un prodotto il renderer File già rilasciato, con un modulo di amministrazione dedicato, e rende esplicita la titolarità condivisa dell'origine del file tra la libreria media e il ripiego su URL esterno. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/file.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/file.blade.php |
| Contratto della radice del renderer | Possiede la propria radice di file-card |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Video — video
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | video |
| Label | Video |
| Categoria | content |
| Campi traducibili | title, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | media_id condiviso; url canonico condiviso |
| Campi media/relazione | Relazione diretta con il media tramite media_id, con ripiego sicuro su URL esterno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco aggiunge il modulo di amministrazione e il percorso di salvataggio mancanti, così il video caricato, gli URL sicuri di provider esterni, i testi visibili tradotti e il comportamento pubblico di ripiego descrivono ora lo stesso contratto. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/video.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/video.blade.php |
| Contratto della radice del renderer | Possiede la propria radice di video-card |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Audio — audio
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | audio |
| Label | Audio |
| Categoria | content |
| Campi traducibili | title, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | media_id condiviso; url canonico condiviso |
| Campi media/relazione | Relazione diretta con il media tramite media_id, con ripiego su URL esterno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | L'amministrazione, il piano dei contenuti e le scritture a blocchi incrementali accettano supporti audio con tipo other e un tipo MIME audio/*; il supporto incompatibile viene rifiutato. La copia localizzata e il rendering sicuro senza controlli vuoti rimangono nativi. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/audio.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/audio.blade.php |
| Contratto della radice del renderer | Possiede la propria radice di audio-card |
| Test / copertura | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Table — table
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | table |
| Label | Table |
| Categoria | content |
| Campi traducibili | title, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | variant condiviso; il renderer verifica anche il ripiego settings.rows |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | mostly clear |
| Lacune note / note | Il blocco allinea la titolarità del titolo tradotto e del testo delle righe all'architettura di traduzione testuale esistente e ora ignora nell'output pubblico gli alberi di figli storici arbitrari; il percorso di ripiego legacy settings.rows resta documentato. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/table.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/table.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio wrapper di tabella |
| Test / copertura | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Quote — quote
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | quote |
| Label | Quote |
| Categoria | content |
| Campi traducibili | Nessuno nel registro attuale |
| Campi condivisi/di impostazione | title, subtitle, content e variant canonici |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco smette di trattare Quote come wrapper di layout o contenitore nell'output pubblico, conservando al tempo stesso le righe figlie già salvate negli alberi di blocchi in amministrazione. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/quote.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/quote.blade.php |
| Contratto della radice del renderer | Possiede la propria radice di citazione |
| Test / copertura | PublicRichContentTest, PageBuilderExperienceTest |
Hero — hero
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | hero |
| Label | Hero |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | Condiviso media_id; condiviso variant; settings.layout; settings.title_tag; settings.background_position; settings.background_overlay |
| Campi media/relazione | Sfondo opzionale image tramite diretto media_id; blocchi figlio button_link per le azioni |
| Comportamento come figlio/contenitore | Contenitore; Bambini button_link (ammessi anche button legacy), nessun conteggio fisso |
| Stato attuale | transitional |
| Lacune note / note | Hero è ora un contratto principale supportato dal codice sorgente pubblicato. La copia dell'introduzione è di proprietà locale, i pulsanti di azione sono normali figli button_link che possiedono le proprie etichette e URL e le immagini di sfondo della libreria multimediale opzionali vengono visualizzate tramite la primitiva multimediale di sfondo nativa WebBlocks UI. I fallback legacy content rimangono leggibili laddove i campi tradotti canonici sono vuoti. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/hero.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/hero.blade.php |
| Contratto della radice del renderer | Possiede la radice promozionale <section> |
| Test / copertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Columns — columns
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | columns |
| Label | Columns |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | variant condiviso |
| Campi media/relazione | Blocchi column_item figli |
| Comportamento come figlio/contenitore | Contenitore; solo figli column_item |
| Stato attuale | clear |
| Lacune note / note | Columns è ora un blocco di contenuto strutturato pubblicato e di prima classe. Il testo introduttivo appartiene alla singola lingua, mentre variante, ordine dei figli e URL dei figli restano condivisi. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/columns.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/columns.blade.php |
| Contratto della radice del renderer | Possiede la radice strutturata-content <section> |
| Test / copertura | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Column Item — column_item
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | column_item |
| Label | Column Item |
| Categoria | content |
| Campi traducibili | title, eyebrow come etichetta badge, subtitle, content tramite righe di traduzione del testo |
| Campi condivisi/di impostazione | Canonico condiviso url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone L'elemento colonna |
| Campi media/relazione | Relazione con il columns padre |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | utilizza la composizione WebBlocks UI wb-icon-card spedita per le varianti semplici con guida a icone e card. Le modifiche locali aggiornano la copia dell'elemento senza sovrascrivere gli URL condivisi, lo slug delle icone, il tono delle icone, le dimensioni delle icone o il tono del badge. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/column_item.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/column_item.blade.php |
| Contratto della radice del renderer | La radice dell'elemento è determinata dal padre e varia in base alla variante di Columns |
| Test / copertura | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
CTA — cta
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | cta |
| Label | CTA |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | Condiviso media_id; condiviso variant; settings.background_position; settings.background_overlay |
| Campi media/relazione | Sfondo opzionale image tramite diretto media_id; blocchi figlio button_link per le azioni |
| Comportamento come figlio/contenitore | Contenitore; Bambini button_link (ammessi anche button legacy), nessun conteggio fisso |
| Stato attuale | clear |
| Lacune note / note | CTA è ora un contratto promozionale pubblicato con copia di proprietà locale, pulsanti di azione come elementi secondari button_link ordinari, immagini di sfondo della libreria multimediale opzionali e un renderer pubblico proprietario del root. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/cta.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/cta.blade.php |
| Contratto della radice del renderer | Possiede la radice promozionale <section> |
| Test / copertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Feature Grid — feature-grid
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | feature-grid |
| Label | Feature Grid |
| Categoria | content |
| Campi traducibili | title, subtitle, content tramite righe di traduzione del testo; bambino feature-item title, etichetta badge e content |
| Campi condivisi/di impostazione | Struttura secondaria condivisa, ordine, collegamenti, slug di icone, toni di icone e toni di badge |
| Campi media/relazione | Blocchi feature-item figli, con supporto compatibile per il legacy column_item |
| Comportamento come figlio/contenitore | Contenitore; i figli ammessi sono feature-item e column_item |
| Stato attuale | transitional |
| Lacune note / note | Feature Grid è ora un alias di compatibilità pubblicato, perché dispone di percorsi reali di amministrazione e rendering già rilasciati, ma continua intenzionalmente a delegare al contratto a card di Columns. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/feature-grid.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/feature-grid.blade.php |
| Contratto della radice del renderer | Delega alla presentazione a card di Columns e usa ancora il wrapper pubblico generico |
| Test / copertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Feature Item — feature-item
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | feature-item |
| Label | Feature Item |
| Categoria | content |
| Campi traducibili | title, eyebrow come etichetta badge, content tramite righe di traduzione del testo |
| Campi condivisi/di impostazione | Canonico condiviso url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone L'elemento funzione |
| Campi media/relazione | Relazione con il feature-grid padre |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | transitional |
| Lacune note / note | è ora un contratto secondario di supporto pubblicato per la griglia delle funzioni pur condividendo le schede elemento colonna esistenti e il rendering dell'icona content. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/feature-item.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/feature-item.blade.php |
| Contratto della radice del renderer | Delega alla presentazione a card di Column Item |
| Test / copertura | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Disposizione
Section — section
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | section |
| Label | Section |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Condiviso media_id; settings.layout_name; settings.spacing; settings.background_position; settings.background_overlay |
| Campi media/relazione | Immagine di sfondo opzionale tramite media_id diretto; i blocchi secondari rimangono contenuti strutturali |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita dei figli |
| Stato attuale | clear |
| Lacune note / note | Il blocco mantiene la Sezione layout orientata: le impostazioni layout condivise rimangono canoniche, i media in background opzionali utilizzano il contratto standard della libreria multimediale, possiede la radice semantica <section> e non sposta la copia rivolta all'utente in impostazioni arbitrarie. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/section.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/section.blade.php |
| Contratto della radice del renderer | Possiede la radice <section> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Container — container
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | container |
| Label | Container |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.width; settings.flow |
| Campi media/relazione | Solo blocchi figli |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita dei figli |
| Stato attuale | clear |
| Lacune note / note | Il contenitore è layout neutro quando il flusso non è impostato o none; solo Flow: Stack esplicito aggiunge il flusso figlio verticale. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/container.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/container.blade.php |
| Contratto della radice del renderer | Possiede la sua radice container <div> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Pila — stack
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | stack |
| Label | Pila |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.spacing |
| Campi media/relazione | Solo blocchi figli |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita dei figli |
| Stato attuale | clear |
| Lacune note / note | Mappe del flusso figlio verticale solo per le classi wb-stack e wb-stack-* spedite. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/stack.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/stack.blade.php |
| Contratto della radice del renderer | Possiede la sua radice stack <div> |
| Test / copertura | StackSplitCatalogTest, StackSplitContractTest |
Dividi — split
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | split |
| Label | Dividi |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.gap; settings.items_alignment; settings.width |
| Campi media/relazione | Esattamente due blocchi secondari diretti |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita di tipo figlio, ma il conteggio diretto dei bambini è limitato a due |
| Stato attuale | clear |
| Lacune note / note | Il primo figlio diretto cresce e il secondo mantiene le dimensioni del contenuto. Una pila può essere annidata su entrambi i lati. L'interfaccia utente bloccata non dispone ancora del modificatore reattivo da split a stack. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/split.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/split.blade.php |
| Contratto della radice del renderer | Possiede la sua radice split <div> |
| Test / copertura | StackSplitCatalogTest, StackSplitContractTest |
Cluster — cluster
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | cluster |
| Label | Cluster |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.gap; settings.alignment; settings.items_alignment; settings.wrap; settings.width |
| Campi media/relazione | Solo blocchi figli |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita dei figli |
| Stato attuale | clear |
| Lacune note / note | Le impostazioni di layout condivise restano esplicite e di proprietà del renderer, incluso il percorso di composizione esistente compatibile con la navbar (full-width, between, center, nowrap) senza aggiungere logica specifica per la navbar. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/cluster.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/cluster.blade.php |
| Contratto della radice del renderer | Possiede la sua radice cluster <div> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Grid — grid
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | grid |
| Label | Grid |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.columns; settings.gap; settings.alternate_media_text_sections; settings.alternate_start |
| Campi media/relazione | Solo blocchi figli |
| Comportamento come figlio/contenitore | Contenitore; nessuna whitelist esplicita dei figli |
| Stato attuale | clear |
| Lacune note / note | Le impostazioni grid condivise rimangono canoniche. Le griglie multimediali/testo alternate mantengono il wrapper wb-grid-* spedito e riordinano le coppie figlie dirette media/testo, incluse le strutture Slider e Sezione testo, in base al contenuto visivo rilevato. Le griglie alternate di pari livello sotto lo stesso genitore condividono una sequenza anche quando altri blocchi appaiono tra di loro, con la prima griglia alternata che controlla la direzione di inizio. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/grid.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/grid.blade.php |
| Contratto della radice del renderer | Possiede la sua radice grid <div> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Modello
Content Header — content_header
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | content_header |
| Label | Content Header |
| Categoria | pattern |
| Campi traducibili | title, eyebrow come etichetta badge, subtitle, meta tramite righe di traduzione del testo |
| Campi condivisi/di impostazione | Condiviso media_id; settings.alignment, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone, settings.background_position, settings.background_overlay |
| Campi media/relazione | Immagine di sfondo opzionale tramite media_id diretto; meta viene memorizzato come elenco strutturato content |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | è un blocco content-shell pattern. Mantiene title di proprietà locale, etichetta badge, introduzione e copia meta, esegue sempre il rendering di title come H1, ignora qualsiasi valore legacy salvato a livello di intestazione al momento del rendering e mantiene condivisi l'allineamento, lo slug dell'icona, il tono dell'icona, la dimensione dell'icona, il tono del badge e il supporto di sfondo opzionale. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/content_header.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/content_header.blade.php |
| Contratto della radice del renderer | Possiede la radice <header> L'intestazione del contenuto |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
Alert — alert
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | alert |
| Label | Alert |
| Categoria | pattern |
| Campi traducibili | title, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.variant |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | La variante condivisa e il testo tradotto si allineano senza problemi. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/alert.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/alert.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio alert |
| Test / copertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Navigazione
Link List — link-list
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | link-list |
| Label | Link List |
| Categoria | navigation |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | Opzionale settings.row_layout (indice/impilato) e settings.list_frame (uniti/schede) |
| Campi media/relazione | Blocchi link-list-item figli |
| Comportamento come figlio/contenitore | Contenitore; solo figli link-list-item |
| Stato attuale | clear |
| Lacune note / note | La fase 3 ora rende il testo introduttivo tradotto esistente sopra l'elenco di link pubblico, senza modificare il comportamento degli elementi figli. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/link-list.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/link-list.blade.php |
| Contratto della radice del renderer | Possiede la radice .wb-link-list quando esistono righe secondarie, aggiungendo wb-link-list--stacked e wb-link-list--cards per gli stili selezionati |
| Test / copertura | LinkListBlockTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Link List Item — link-list-item
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | link-list-item |
| Label | Link List Item |
| Categoria | navigation |
| Campi traducibili | Richiesto title, opzionale eyebrow come etichetta badge, opzionale subtitle, opzionale content tramite righe di traduzione del testo |
| Campi condivisi/di impostazione | url condiviso obbligatorio, miniatura media_id condivisa opzionale, settings.icon_slug opzionale, settings.icon_tone, settings.icon_size, settings.badge_tone |
| Campi media/relazione | Supporti miniature opzionali tramite la relazione di blocco diretto media_id; relazione padre link-list |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | L'URL condiviso con la copia della riga tradotta è coerente. Le icone opzionali utilizzano slug del catalogo content attivi ed eseguono il rendering solo tramite classi di icone, tono e dimensioni sicure. Una miniatura dell'immagine opzionale viene visualizzata come wb-link-list-thumb nella singola colonna iniziale della riga e prevale sull'icona quando entrambe sono impostate. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/link-list-item.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/link-list-item.blade.php |
| Contratto della radice del renderer | Possiede la radice del collegamento riga, aggiunge wb-link-list-item--media quando viene eseguito il rendering di una miniatura o di un'icona e omette l'elemento descrizione quando content è vuoto |
| Test / copertura | LinkListBlockTest, LinkListThumbnailTest, PageBuilderExperienceTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
TOC — toc
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | toc |
| Label | TOC |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Solo il title canonico |
| Campi media/relazione | Blocchi header pubblicati nello stesso slot con ancoraggi validi |
| Comportamento come figlio/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | clear |
| Lacune note / note | TOC è un tipo di blocco di sistema. Esegue la scansione solo dello slot in cui è inserito, non dell'intera pagina, seguendo l'ordine dei documenti e non tratta più i blocchi secondari arbitrari come TOC pubblico content. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/toc.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/toc.blade.php |
| Contratto della radice del renderer | Possiede il proprio wrapper TOC generato quando esistono intestazioni |
| Test / copertura | PublicRichContentTest, PageBuilderExperienceTest, TocHeadingScanTest |
Breadcrumb — breadcrumb
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | breadcrumb |
| Label | Breadcrumb |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.home_label; settings.include_current condivisi |
| Campi media/relazione | Contesto di breadcrumb della pagina, del sito e della lingua (locale) correnti |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | La fase 3 conserva le impostazioni di breadcrumb esposte attraverso il percorso condiviso BlockRequest, così il comportamento del form corrisponde ora alla persistenza e al rendering. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/breadcrumb.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/breadcrumb.blade.php |
| Contratto della radice del renderer | Possiede la radice <nav.wb-breadcrumb> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest |
Header Actions — header-actions
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | header-actions |
| Label | Header Actions |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Condiviso settings.show_mode_toggle; settings.show_accent_toggle; settings.show_search; settings.show_language_switcher |
| Campi media/relazione | Rotta di ricerca più hook di interfaccia lato client |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Blocco di utilità di sistema; per scelta progettuale non possiede traduzioni. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/header-actions.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/header-actions.blade.php |
| Contratto della radice del renderer | Possiede solo il proprio cluster di azioni interno |
| Test / copertura | PublicEditorialBlocksRenderingTest |
Navbar — sticky-navbar
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sticky-navbar |
| Label | Navbar |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.layout_name; settings.sticky_mode |
| Campi media/relazione | Blocchi figli annidati della navbar |
| Comportamento come figlio/contenitore | Contenitore; i figli consentiti sono container, cluster, header, plain_text, rich-text, button_link, navbar-brand, navbar-navigation, header-actions, search-form |
| Stato attuale | clear |
| Lacune note / note | La fase 3 allinea lo slug persistito sticky-navbar con Block::ownsPublicRoot(), così Navbar non riceve più un wrapper di blocco pubblico generico aggiuntivo. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sticky-navbar.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sticky-navbar.blade.php |
| Contratto della radice del renderer | Il renderer pubblico possiede la root esterna <nav.wb-navbar> |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, BlockTypePhaseThreeContractsTest |
Navbar Brand — navbar-brand
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | navbar-brand |
| Label | Navbar Brand |
| Categoria | navigation |
| Campi traducibili | title, subtitle tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.url; settings.target; settings.aria_label condivisi |
| Campi media/relazione | Media del logo condiviso tramite media_id; fallback all'URL della home del sito |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | La fase 3 allinea il comportamento di salvataggio dell'amministrazione con il contratto del renderer distribuito: l'URL salvato esplicito ha la precedenza, altrimenti si utilizza il percorso della home del sito corrente quando disponibile e infine / come fallback sicuro finale. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/navbar-brand.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/navbar-brand.blade.php |
| Contratto della radice del renderer | Possiede solo il link del brand interno |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Navbar Navigation — navbar-navigation
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | navbar-navigation |
| Label | Navbar Navigation |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Canonical title come etichetta ARIA condivisa; settings.menu_key; settings.active_indicator; settings.active_matching |
| Campi media/relazione | Albero di menu NavigationItem condiviso |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Il collegamento del menu condiviso, l'etichetta ARIA, l'indicatore attivo e la corrispondenza attiva sono comportamenti correnti di proprietà del prodotto. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/navbar-navigation.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/navbar-navigation.blade.php |
| Contratto della radice del renderer | Possiede solo il wrapper interno navigation e mappa le impostazioni dell'indicatore attivo sulle classi attive della barra di navigazione WebBlocks UI |
| Test / copertura | PublicEditorialBlocksRenderingTest |
Sidebar Brand — sidebar-brand
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sidebar-brand |
| Label | Sidebar Brand |
| Categoria | navigation |
| Campi traducibili | title, subtitle tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.url; settings.target; settings.aria_label condivisi |
| Campi media/relazione | Media del logo condiviso tramite media_id; fallback all'URL della home del sito |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | La fase 3 assegna a Sidebar Brand lo stesso ordine di fallback del nome accessibile in presenza del solo logo di Navbar Brand e lo stesso contratto conservativo di fallback dell'URL condiviso. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sidebar-brand.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sidebar-brand.blade.php |
| Contratto della radice del renderer | Possiede solo il link del brand interno |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Sidebar Navigation — sidebar-navigation
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sidebar-navigation |
| Label | Sidebar Navigation |
| Categoria | navigation |
| Campi traducibili | title tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.menu_key; settings.layout_name; settings.show_icons; settings.active_matching condivisi |
| Campi media/relazione | L'albero NavigationItem del CMS oppure blocchi figli manuali |
| Comportamento come figlio/contenitore | Contenitore; solo figli sidebar-nav-item e sidebar-nav-group |
| Stato attuale | clear |
| Lacune note / note | Sia le impostazioni condivise della modalità menu sia la modalità con figli manuali sono esplicite. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sidebar-navigation.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sidebar-navigation.blade.php |
| Contratto della radice del renderer | Possiede la radice <nav.wb-sidebar-nav> |
| Test / copertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Item — sidebar-nav-item
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sidebar-nav-item |
| Label | Sidebar Nav Item |
| Categoria | navigation |
| Campi traducibili | title tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.url; settings.target; settings.icon; settings.active_mode; settings.manual_active condivisi |
| Campi media/relazione | Slug condiviso del catalogo icone; relazione con la sidebar padre |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Il comportamento del link condiviso e l'etichetta tradotta si accordano bene. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sidebar-nav-item.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sidebar-nav-item.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio link della sidebar |
| Test / copertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Group — sidebar-nav-group
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sidebar-nav-group |
| Label | Sidebar Nav Group |
| Categoria | navigation |
| Campi traducibili | title tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.icon; settings.initially_open; settings.layout_name condivisi |
| Campi media/relazione | Blocchi sidebar-nav-item figli; slug del catalogo icone |
| Comportamento come figlio/contenitore | Contenitore; solo figli sidebar-nav-item |
| Stato attuale | clear |
| Lacune note / note | La fase 3 mantiene il contratto del wrapper nav-group distribuito di WebBlocks UI, mentre i link figli manuali annidati riutilizzano ora la stessa semantica dell'elemento sidebar per href, target, icona e output dello stato attivo. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sidebar-nav-group.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sidebar-nav-group.blade.php |
| Contratto della radice del renderer | Possiede la propria radice .wb-nav-group |
| Test / copertura | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Search Form — search-form
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | search-form |
| Label | Search Form |
| Categoria | navigation |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | variant; settings.show_button condivisi |
| Campi media/relazione | Contesto della rotta di ricerca, del sito e della lingua (locale) |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Le impostazioni condivise di visualizzazione del pulsante e le etichette tradotte sono esplicite. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/search-form.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/search-form.blade.php |
| Contratto della radice del renderer | Possiede la radice <form role="search"> |
| Test / copertura | SearchFormTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Footer — sidebar-footer
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | sidebar-footer |
| Label | Sidebar Footer |
| Categoria | navigation |
| Campi traducibili | title, subtitle, content tramite righe di traduzione testuale |
| Campi condivisi/di impostazione | settings.variant condiviso |
| Campi media/relazione | Nessuno |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | La variante condivisa con testo tradotto è semplice. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/sidebar-footer.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/sidebar-footer.blade.php |
| Contratto della radice del renderer | Possiede la radice del proprio blocco footer interno |
| Test / copertura | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Moduli
Contact Form — contact_form
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | contact_form |
| Label | Contact Form |
| Categoria | form |
| Campi traducibili | title, content, submit_label, success_message tramite righe di traduzione del modulo di contatto |
| Campi condivisi/di impostazione | settings.recipient_email; settings.send_email_notification; settings.store_submissions condivisi |
| Campi media/relazione | Gli invii di contact_messages sono collegati al blocco e alla pagina |
| Comportamento come figlio/contenitore | Non è un contenitore |
| Stato attuale | clear |
| Lacune note / note | Il renderer emette un campo di controllo anti-spam generato nascosto di proprietà del CMS che non è un normale input del visitatore e non deve essere creato manualmente. Gli invii con i campi di controllo compilati restituiscono un successo generico senza archiviazione o notifica. I messaggi legittimi vengono archiviati prima della notifica, lo spam classificato viene conservato per la revisione da parte dell'amministratore, il fallback del destinatario viene bloccato, il sito, CONTACT_RECIPIENT_EMAIL, quindi MAIL_FROM_ADDRESS e le pagine dei contatti non devono utilizzare HTML attendibili/moduli grezzi/mailto: come sostituti. I piani Internal Content API content preservano submit_label e success_message e il rendering locale tedesco utilizza le etichette form predefinite tedesche quando la copia personalizzata è assente. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/contact_form.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/contact_form.blade.php |
| Contratto della radice del renderer | Possiede la propria radice section.wb-card ed emette un modulo nativo protetto da CSRF che invia a /contact-messages |
| Test / copertura | ContactFormModuleTest, InternalContentApiTest, ContactMailDiagnoseCommandTest |
Avanzato
HTML (Trusted) — html
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | html |
| Etichetta | HTML (Trusted) |
| Categoria | advanced |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | Il content HTML attendibile canonico |
| Campi media/relazione | I registri pubblici di overlay e di fine body possono ricevere frammenti estratti |
| Comportamento figli/contenitore | Non è un contenitore; le righe figlie storiche vengono conservate, ma non è supportato l'inserimento di nuovi figli |
| Stato attuale | mostly clear |
| Lacune note / note | La fase 3 smette di trattare Trusted HTML come wrapper contenitore di figli pubblico. Il markup attendibile può comunque influenzare l'output condiviso di overlay o di fine body oltre la radice visibile. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Sorgente del form di amministrazione | resources/views/admin/blocks/types/html.blade.php |
| Sorgente del renderer pubblico | resources/views/pages/partials/blocks/html.blade.php |
| Contratto della radice del renderer | Racchiude il markup attendibile in un <div> e può anche emettere contenuti overlay o di fine body al di fuori della radice visibile. |
| Test / copertura | PublicEditorialBlocksRenderingTest, PublicRichContentTest, PageBuilderExperienceTest |
Contratti pubblicati aggiuntivi
Dispositivo di scorrimento — slider
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | slider |
| Label | Dispositivo di scorrimento |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | 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 |
| Campi media/relazione | I blocchi secondari slide rappresentano la relazione primaria. Lo stesso Slider non supporta la proprietà diretta dei media. |
| Comportamento come figlio/contenitore | Compatibile con contenitori. Il tipo di bambino consentito è slide. |
| Stato attuale | clear |
| Lacune note / note | Nessuno |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/slider.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/slider.blade.php |
| Contratto della radice del renderer | Possiede la radice pubblica <section data-wb-slider>, la traccia interna, i controlli e il punto navigation. |
| Test / copertura | SliderContentPositionTest |
Diapositiva — slide
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | slide |
| Label | Diapositiva |
| Categoria | layout |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | 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 |
| Campi media/relazione | Il supporto in background slide opzionale è posseduto tramite la relazione di blocco diretto media_id. I blocchi secondari sono la relazione content visibile.; mobile_media_id assegna un record della libreria multimediale di immagini tramite block_media.mobile_image. Invia null a clear l'override. |
| Comportamento come figlio/contenitore | Compatibile con contenitori. I tipi secondari non sono esplicitamente limitati nell'helper corrente. |
| Stato attuale | clear |
| Lacune note / note | Nessuno |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/slide.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/slide.blade.php |
| Contratto della radice del renderer | Possiede la radice pubblica <article class="wb-slide"> e delega la copia/interfaccia utente visibile ai blocchi figlio nidificati. Con larghezze del viewport fino a 768 px, un'immagine mobile pubblica sovrascrive l'immagine predefinita tramite l'immagine/sorgente o l'immagine di sfondo; le sostituzioni assenti o non disponibili utilizzano l'immagine predefinita. |
| Test / copertura | SliderContentPositionTest |
Navigazione automatica — navigation-auto
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | navigation-auto |
| Label | Navigazione automatica |
| Categoria | navigation |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.menu_key |
| Campi media/relazione | Il sito corrente e il contesto locale risolvono la struttura del menu renderizzata al momento del rendering. |
| Comportamento come figlio/contenitore | Non è un contenitore. Le voci di menu provengono dai record di navigazione, non dai blocchi secondari. |
| Stato attuale | clear |
| Lacune note / note | Nessuno |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/navigation-auto.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/navigation-auto.blade.php |
| Contratto della radice del renderer | Possiede la radice pubblica <nav class="wb-stack wb-gap-2" data-wb-menu-key="..."> e rende la struttura del menu visibile come elenchi <ul> nidificati di ancoraggi wb-link. |
| Test / copertura | ManagedCtaApiTest |
Valutazione Titolo — rating
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | rating |
| Label | Valutazione Titolo |
| Categoria | system |
| Campi traducibili | ; sottotitolo |
| Campi condivisi/di impostazione | settings.scale; settings.allow_change; settings.show_summary; settings.data_scope |
| Campi media/relazione | La pagina corrente, il sito, il blocco, l'hash del visitatore e l'URL di origine vengono registrati sulle righe rating. |
| Comportamento come figlio/contenitore | Non è un contenitore nel contratto corrente. |
| Stato attuale | clear |
| Lacune note / note | Nessuno |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/rating.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/rating.blade.php |
| Contratto della radice del renderer | Possiede la radice pubblica section.wb-card.wb-rating, esegue il rendering di una copia localizzata opzionale di titoli/sottotitoli, una media wb-rating-stars di sola lettura e un modulo stella senza JS wb-rating-input che pubblica ciascun invio su /content-ratings. |
| Test / copertura | Test di gestione del coinvolgimento |
Commenti — comments
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | comments |
| Label | Commenti |
| Categoria | system |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.form_enabled; settings.show_approved; settings.show_author_name; settings.sort_order; settings.data_scope |
| Campi media/relazione | La pagina corrente, il sito, il blocco, l'hash del visitatore e l'URL di origine vengono registrati nelle righe dei commenti. |
| Comportamento come figlio/contenitore | Non è un contenitore nel contratto corrente. |
| Stato attuale | clear |
| Lacune note / note | Nessuno |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/comments.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/comments.blade.php |
| Contratto della radice del renderer | Possiede la radice pubblica section.wb-card, esegue il rendering di comments approvato ed emette un modulo di commento nativo protetto da CSRF che pubblica su /comment-entries. |
| Test / copertura | Test di gestione del coinvolgimento |
Elenco pagine — page-list
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | page-list |
| Label | Elenco pagine |
| Categoria | content |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | 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 |
| Campi media/relazione | Nessun supporto di blocco. Le miniature vengono risolte dalla traduzione di ciascuna pagina elencata al momento del rendering. |
| Comportamento come figlio/contenitore | Non è un contenitore. Le righe provengono da una query di pagina, non da blocchi secondari. |
| Stato attuale | clear |
| Lacune note / note | Le descrizioni e le miniature delle schede riutilizzano la descrizione SEO e l'immagine Open Graph, create per la ricerca e i social anziché per una scheda. Sono previste impostazioni delle pagine dedicate list_excerpt e list_image. Applicazione |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/page-list.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/page-list.blade.php |
| Contratto della radice del renderer | Possiede la sua radice pubblica: uno wb-grid di articoli wb-card o ancoraggi di schede intere nelle schede layout o uno wb-link-list di ancoraggi wb-link-list-item nei collegamenti layout. Non esegue il rendering di nulla quando la query non restituisce pagine. |
| Test / copertura | PageListBlockRenderTest |
— application
Contenuto e comportamento
| Campo | Contratto |
|---|---|
| Slug | application |
| Label | |
| Categoria | content |
| Campi traducibili | Nessuno |
| Campi condivisi/di impostazione | settings.application_handle; settings.application_settings; settings.width; settings.loading; settings.aspect_ratio; settings.min_height; settings.show_loading_state; settings.show_failure_state |
| Campi media/relazione | Nessuna relazione diretta con i media CMS. Le risorse eseguibili application sono file di proprietà del registro, non supporti editoriali. |
| Comportamento come figlio/contenitore | Non è un contenitore. Il runtime application possiede il proprio DOM interno. |
| Stato attuale | clear |
| Lacune note / note | Il codice dell'applicazione e la gestione del registro rimangono separati dal posizionamento editoriale; il blocco seleziona una definizione abilitata e ne convalida le impostazioni. |
Sorgenti e test
| Sorgente | Contratto |
|---|---|
| Origine del modulo di amministrazione | resources/views/admin/blocks/types/application.blade.php |
| Origine del renderer pubblico | resources/views/pages/partials/blocks/application.blade.php |
| Contratto della radice del renderer | Possiede una radice .wb-application. Le definizioni in linea ricevono un elemento di montaggio sicuro; Le definizioni iframe ricevono un wrapper iframe di proprietà del CMS. Le definizioni mancanti o non valide non interrompono mai la pagina circostante. |
| Test / copertura | Test applicazioni incorporate |
Panoramica su validazione e persistenza
I tipi di blocco pubblicati oggi non hanno ciascuno la propria classe di richiesta dedicata.
WebBlocks\Cms\Http\Requests\Admin\BlockRequestè il percorso condiviso della richiesta di modifica- rami specifici dello slug all'interno della richiesta di normalizzare i campi nell'archiviazione canonica corrente
WebBlocks\Cms\Support\Blocks\BlockPayloadWritermantiene il payload del blocco normalizzatoWebBlocks\Cms\Support\Blocks\BlockTranslationWritersposta i campi di proprietà delle impostazioni locali nelle righe di traduzione per le famiglie registrateWebBlocks\Cms\Support\Blocks\BlockTranslationResolverrisolve i valori tradotti o di fallback su un'istanza di blocco renderizzabile
Comportamento Di Compatibilità
Le impostazioni legacy Gallery e Table possono restare leggibili se mancano traduzioni canoniche o media ordinati. I fallback storici non sono il formato preferito di creazione. Usare la matrice corrente.
Le righe bozza e gli handle di sola compatibilità renderer non sono contratti pubblicati. Discovery e finestra del contratto possono segnalare l’assenza di un contratto distribuito.
Aggiunte di contenuti multimediali ed editor fino alla versione 1.94.2
Da CMS 1.91.0, diapositiva, immagine, eroe, sezione, scheda, invito all'azione, intestazione contenuto ed elemento elenco collegamenti supportano mobile_media_id opzionale nei piani e negli aggiornamenti dei blocchi esistenti. La relazione utilizza block_media.role = mobile_image, è condivisa tra più impostazioni locali e sostituisce l'immagine predefinita fino a 768 px con fallback quando non disponibile. Non introduce testo alternativo o didascalie mobili separati. Vedi Varianti immagine multimediale.
Dalla versione 1.91.1, Slide e Slider offrono nove posizioni dei contenuti: centro, centro-sinistra, centro-destra, alto-sinistra, alto-centro, alto-destra, basso-sinistra, basso-centro e basso-destra. Questi valori sono condivisi dall'amministratore, dall'API e dal renderer.
Dalla versione 1.93.0, l'editor Rich Text dispone di operazioni di annullamento/ripetizione per campo, ripristino della selezione, modalità di messa a fuoco e conteggio delle parole. Le intestazioni incollate e il testo delle celle della tabella rimangono come paragrafi del corpo sicuri; le intestazioni semantiche, le tabelle e i media appartengono a blocchi dedicati. Ciò non aggiunge una nuova variante Rich Text memorizzata né consente markup eseguibile. Vedi Rich Text.