WebBlocks CMS Inventario per la creazione di pagine AI

Scopo

Questo è il contratto di progettazione e creazione compatto, rivolto all'intelligenza artificiale, per WebBlocks CMS. Leggetelo prima di proporre o applicare un progetto di pagina tramite Internal Content API.

Risponde a cinque domande per ogni blocco principale spedito:

  1. Quali contenuti rimangono modificabili nell'amministrazione CMS?
  2. Quali impostazioni e varianti condivise sono supportate?
  3. Quali relazioni secondarie e multimediali sono valide?
  4. Quale pubblico stabile HTML emette il renderer?
  5. Quale risultato visivo può produrre il blocco senza la pagina grezza HTML?

Questo documento riepiloga il comportamento supportato dal codice sorgente. Il rilevamento delle API live rimane autorevole per ID specifici dell'installazione, plug-in abilitati, tipi di blocchi personalizzati, impostazioni internazionali, layout, record multimediali, menu di navigazione e funzionalità.

Baseline di controllo

  • Archivio: fklavyenet/webblocks-cms
  • Filiale: main
  • A commit controllato: 741a44bc0fe00bf38cae0753bd9edb02978b0dbe
  • Adocumentazione di rilascio controllata: 1.40.2
  • Adata di revisione: 2026-07-14
  • Forma del repository: solo pacchetto Composer pacchetto
  • Righe del catalogo principale pubblicate: 51
  • Bozza delle righe del catalogo precedente: 7
  • ARighe principali strutturate scrivibili dopo l'applicazione della policy seguente: 50
  • AI righe grezze scrivibili HTML dopo l'applicazione della policy seguente: 0

Modifiche successive alla revisione contabile

Il riferimento di cui sopra è ancora l'ultimo audit completo. Queste voci sono state corrette contro la fonte in seguito invece di ricontrollare ogni blocco, quindi tratta qualsiasi cosa fuori da questo elenco come 1.40.2-era e confermalo tramite rilevamento API in tempo reale.

  • card (1.40.5): esiste lo stile Carta variant. Questo documento in precedenza affermava che non esisteva alcun campo variante visiva della carta supportato, il che era sbagliato da 1.40.5 in poi.
  • link-list (1.40.10): settings.row_layout e settings.list_frame.
  • link-list-item (1.40.8): miniatura media_id opzionale.
  • 1.91.0: relazioni immagine mobile opzionali su otto blocchi multimediali nativi.
  • 1.91.1: tutte e nove le posizioni dei contenuti Slide e Slider.
  • 1.93.0: Annulla/ripristina Rich Text, modalità di messa a fuoco, conteggio parole e comportamento di incollamento sicuro.
  • 1.94.0–1.94.2: convalida di avvio del plug-in gestito, quarantena, pacchetti conservati e controlli di ripristino dell'account attivo.

Nota sul repository storico: l'albero CMS solo pre-pacchetto conteneva docs/feature-inventory.md, un'ampia matrice di rilevabilità delle funzionalità del prodotto. È stato rimosso quando è stato costruito l'albero del repository dei soli pacchetti e non era un inventario di creazione AI per blocco. Il contratto runtime ora risiede in resources/contracts/inventory.md.

Famiglie di origine ispezionate:

  • src/Support/Blocks/CoreBlockTypeCatalogSyncer.php
  • src/Support/BlockTypes/BlockTypeContractRegistry.php
  • src/Support/Blocks/BlockTranslationRegistry.php
  • src/Models/Block.php
  • src/Http/Requests/Admin/BlockRequest.php
  • src/Support/InternalContentApi/InternalContentPlanService.php
  • src/Support/InternalContentApi/InternalContentApiOperations.php
  • src/Http/Controllers/InternalContentApi/InternalContentResourceController.php
  • src/Http/Controllers/InternalContentApi/InternalSharedSlotController.php
  • src/Http/Controllers/InternalContentApi/InternalApiDiscoveryController.php
  • routes/admin.php
  • resources/views/admin/blocks/types/*.blade.php
  • resources/views/admin/blocks/settings/*.blade.php
  • resources/views/pages/partials/blocks/*.blade.php
  • public/cms/css/public.css
  • Test mirati dei pacchetti e documentazione attuale del prodotto

Regole di creazione AI non negoziabili

  1. Utilizza blocchi strutturati. Non archiviare una pagina, una sezione, una raccolta di schede, una shell di navigazione, un modulo o un componente visivo in Trusted HTML.
  2. html è una botola di fuga per soli umani. Il rilevamento API può identificarlo come non disponibile, ma nessuna mutazione API può creare, aggiornare, sostituire, spostare, riordinare, clonare, promuovere, pubblicare o eliminare un blocco HTML.
  3. Non ignorare la restrizione HTML tramite Rich Text, <style>, <script>, attributi del gestore eventi, markup iframe, markup SVG, markup codificato o impostazioni inventate.
  4. Utilizzare solo campi, valori enum, ruoli multimediali e relazioni secondarie documentate qui e confermate dal rilevamento in tempo reale.
  5. Tratta un campo modificabile dall'amministratore come parte del contratto di creazione supportato. Un valore riconosciuto solo da un renderer o da un percorso di compatibilità legacy non è un normale campo di creazione AI.
  6. Ie una regione visiva non può essere espressa con il contratto supportato, interrompi e segnala un divario di capacità. Non approssimarlo silenziosamente con blocchi non correlati e non ricorrere a HTML.
  7. Il sito CSS può perfezionare la tipografia, la spaziatura, il colore, i bordi, le ombre e la presentazione reattiva attraverso hook pubblici stabili. Non deve diventare un archivio di contenuti nascosti o ricostruire il markup semantico mancante.
  8. Non prendere di mira gli ID del database, gli ID dei blocchi generati, i selettori di posizione dei fratelli o :nth-child() per il comportamento di progettazione essenziale. Preferisci attributi di tipo blocco, classi wb-* native, classi del corpo della pagina e impostazioni documentate.
  9. Mantieni ogni titolo, paragrafo, etichetta, pulsante, badge, immagine, didascalia, menu e impostazione del modulo visibili modificabili tramite il campo CMS nativo o il record correlato.
  10. Convalidare prima, applicare solo dopo l'approvazione esplicita dell'utente, creare prima bozze e lasciare le azioni di aggiornamento del sistema in tempo reale e i test visivi in tempo reale all'operatore umano se non autorizzato separatamente.
  11. Considera la scheda come una presentazione con partecipazione attiva, non come il modo predefinito per raggruppare la copia correlata. Utilizzare una carta solo per un'entità utilizzabile in modo indipendente, ripetibile o limitata come un prodotto, plug-in, piano tariffario, download o modulo.
  12. Prima di scegliere i blocchi, indica una direzione di progettazione a livello di sito che copra carattere, densità, tipografia, geometria, immagini, angoli e contrasto. Fai in modo che l'albero dei blocchi e il sito CSS implementino quella direzione invece di scegliere ciascuna sezione isolatamente.
  13. Varia deliberatamente il ritmo della pagina. Combina regioni strette, regolari, larghe e a larghezza intera; alterna copia silenziosa, immagini dominanti e raccolte strutturate anziché ripetere sezioni con lo stesso peso.

HTML Criterio API di blocco

Il contratto del prodotto target è:

Superficie Comportamento html
Amministrazione CMS Gli operatori umani possono creare e modificare Trusted HTML revisionato.
Renderer pubblico I blocchi HTML pubblicati esistenti continuano a essere sottoposti a rendering.
Scoperta API Segnala il blocco come api_readable: true, api_writable: false, authoring: human_only e spiega la restrizione. Non presentare un esempio di payload scrivibile.
Convalida/applica contenuto Rifiuta ogni carico utile html nuovo o sostitutivo con il codice stabile block_type_not_api_writable.
Creazione incrementale di blocchi di pagine/slot condivisi Rifiuta html prima della normalizzazione o della persistenza.
Blocco esistente PATCH Rifiuta quando il tipo di blocco di destinazione è html, anche se il campo inviato sarebbe altrimenti considerato sicuro.
Riordina, sposta, elimina, sostituzione degli slot, aggiornamento graduale e promozione Rifiutare qualsiasi mutazione il cui sottoalbero interessato o ambito di sostituzione contenga un blocco HTML esistente. Non eliminarlo come effetto collaterale.
Funzionalità del token API Nessuna funzionalità può ignorare la restrizione a livello di prodotto.
Leggi endpoint Può restituire il blocco esistente per l'ispezione in base alla politica di lettura scelta; l'accesso in lettura non deve mai implicare l'accesso in scrittura.

Questa policy viene applicata nel codice da una singola classe di policy del prodotto, WebBlocks\Cms\Support\BlockTypes\BlockTypeApiAuthoringPolicy. Ogni superficie API la consulta invece di ripetere la regola: entrambi i normalizzatori di blocco, PATCH del blocco esistente, creazione incrementale di pagine e Shared Slot, riordino di pagine/Shared Slot, eliminazione di sottoalbero, cancellazione di tutto Shared Slot, pubblicazione di pagine e Shared Slot, sostituzione di slot di bozza, creazione e promozione di aggiornamenti graduali, assegnazione di Shared Slot e Eliminazione della pagina API. I rifiuti avvengono prima di qualsiasi transazione o scrittura, restituiscono HTTP 422 con il codice stabile block_type_not_api_writable e non lasciano modifiche parziali. Nessuna funzionalità token lo sovrascrive.

Cosa significa "CMS gestibile"

Un progetto è gestibile dal CMS solo quando sono vere tutte le seguenti condizioni:

  • Il contenuto visibile viene archiviato in campi di traduzione nativi, impostazioni, relazioni della libreria multimediale, record di navigazione, record commerciali o blocchi secondari.
  • Il normale editor di blocchi espone i campi necessari per mantenere il risultato.
  • Il markup pubblico proviene da un pacchetto o da un renderer di plug-in, non dal contenuto della pagina.
  • La presentazione utilizza varianti documentate, impostazioni, token del tema e hook CSS stabili.
  • Il riordinamento o la modifica del contenuto non richiede la modifica di HTML o CSS.
  • Il comportamento mobile deriva dal renderer, WebBlocks UI, o dal sito stabile CSS anziché dal markup mobile duplicato nel contenuto.

Un renderer può riconoscere un valore legacy o interno che il normale modulo di amministrazione non espone. Tale valore è documentato come input di compatibilità, non come campo di creazione AI consigliato.

Tabella delle decisioni di progettazione

Necessità visiva Contratto preferibile Condizione di arresto
Banda della pagina maggiore section con blocchi figlio Non inserire copia visibile nelle impostazioni della sezione.
Vincolo di larghezza container Non utilizzare il contenitore come scheda o superficie.
Ritmo del contenuto verticale stack Non utilizzare il contenitore solo per ottenere un flusso verticale.
Contenuto principale più un'azione o un valore compatto split Utilizzare esattamente due figli diretti; annida Stack quando un lato necessita di più blocchi.
Azioni orizzontali o elementi compatti cluster Non utilizzare la griglia per una singola riga di pulsanti.
Celle ripetute reattive grid con bambini strutturati Non utilizzare Grid per falsificare una tabella semantica.
Titolo della pagina, introduzione, badge, icona, metadati content_header Possiede sempre un H1; non utilizzarlo per le normali intestazioni nidificate.
Introduzione al marketing hero Hero supporta i layout a sinistra, centrato, diviso e al vivo; diviso esegue il rendering dei media in primo piano mentre al vivo crea una fascia fotografica senza cornice. Segnala una lacuna quando il progetto richiede una seconda immagine in primo piano modificabile o un contenuto nidificato arbitrario.
Fascia di conversione cta L'attuale CTA non accetta figli strutturati normali diversi dai figli dei pulsanti legacy gestiti.
Elementi di funzionalità o statistiche ripetuti columns e column_item Preferire grid e card componibile quando è necessario contenuto nidificato arbitrario.
Carta componibile card plus Regioni delle carte Utilizzare solo per contenuti delimitati/utilizzabili in modo indipendente; le varianti sono predefinita, piatta, disattivata, evidenziata e accento.
Immagine semantica singola image Utilizza Galleria per raccolte e campi multimediali di sfondo per gli sfondi supportati.
Raccolta di immagini gallery Non aggiungere una lightbox HTML separata.
Dispositivo di scorrimento/carosello slider più slide Utilizza Galleria quando il contenuto è solo una raccolta di immagini.
Navigazione Record di navigazione più blocchi Navbar/Sidebar Non codificare gli ancoraggi di navigazione in HTML.
Modulo di contatto contact_form Non utilizzare il markup <form> non elaborato o mailto: come forma normale.
Valutazioni/commenti rating e comments Non riprodurre l'archiviazione o i moduli di impegno in HTML.
Composizione una tantum non supportata Rapporto sul divario di capacità Non impostare mai html come predefinito.

Forma del piano di contenuto canonico

Utilizzare array children nidificati. Non inviare ID di relazione del database in un piano di contenuto.

{
  "type": "section",
  "settings": {
    "spacing": "lg"
  },
  "children": [
    {
      "type": "container",
      "settings": {
        "width": "lg"
      },
      "children": [
        {
          "type": "plain_text",
          "translations": {
            "content": "Editable copy"
          }
        }
      ]
    }
  ]
}

Convenzioni del piano dei contenuti:

  • Inserisci la copia di proprietà della locale direttamente in translations per la locale del piano selezionato.
  • Inserisci URL, destinazione, variante di presentazione e altre opzioni condivise in settings.
  • Inserisci l'assegnazione diretta della libreria multimediale in media_id.
  • slide, image, hero, section, card, cta, content_header e link-list-item accetta anche un riferimento mobile_media_id di livello superiore opzionale un record della libreria multimediale di immagini. È memorizzato in block_media con il ruolo mobile_image, condiviso tra più impostazioni locali e modificabile tramite il supporto di amministrazione raccoglitrice e PATCH /blocks/{block}. Su schermi fino a 768 px di larghezza sostituisce l'immagine predefinita; a cui ricorre un'immagine mobile assente, cancellata o privata l'impostazione predefinita. Invia null per cancellarlo; ometterlo in PATCH lo preserva. Le immagini in primo piano utilizzano <picture><source media="(max-width: 768px)">; i blocchi di sfondo utilizzano uno sfondo reattivo CSS. Utilizzare un altro ritaglio del stesso aspetto visivo: testo alternativo, didascalie, posizione, adattamento, sovrapposizioni e collegamenti rimangono condiviso. Il Visualizzatore galleria del blocco Immagine continua ad aprire l'impostazione predefinita immagine a piena risoluzione. Gli elementi della Galleria, i loghi dei marchi, i video e l'audio non lo fanno accettare questo campo.
  • Inserisci gli elementi della Galleria in gallery_items o gallery_media_ids.
  • Utilizzare solo children nidificati; non inviare id, parent_id, block_id, slot_type_id o block_type_id.
  • L'API attualmente accetta un oggetto settings di forma ampia. Quella permissività non è il permesso di inventare ambientazioni; utilizzare solo i tasti elencati di seguito.

Shell di rendering pubblico

Il rendering normale dello slot principale fornisce:

<main class="wb-public-main" id="main-content">
  <div class="wb-container wb-container-lg">
    <div class="wb-stack wb-gap-6">
      <!-- page blocks -->
    </div>
  </div>
</main>

I blocchi contrassegnati come proprietario della radice inseriscono data-wb-public-block-type nella propria radice semantica. Altri blocchi di livello superiore normalmente ricevono:

<div class="wb-public-block" data-wb-public-block-type="block-handle">
  <!-- renderer output -->
</div>

I caratteri di sottolineatura si normalizzano in trattini in data-wb-public-block-type; ad esempio content_header diventa content-header.

Indice del catalogo rapido

L'attuale catalogo principale pubblicato contiene 55 righe:

Gruppo Maniglie
Layout e composizione section, container, stack, split, cluster, grid, card, card_header, card_body, card_footer, slider, slide
Editoriale e marketing header, plain_text, rich-text, content_header, hero, cta, columns, column_item, feature-grid, feature-item, stat-card, image, gallery, download, file, video, audio, code, button_link, table, quote, page-list, application
Navigazione link-list, link-list-item, navigation-auto, toc, breadcrumb, header-actions, sticky-navbar, navbar-brand, navbar-navigation, sidebar-brand, sidebar-navigation, sidebar-nav-item, sidebar-nav-group, search-form, sidebar-footer
Modello, forma e coinvolgimento alert, contact_form, rating, comments
Avanzato solo per gli esseri umani html

Blocchi di layout e composizione

section — Sezione

Area contrattuale Comportamento basato sulla fonte
Scopo Banda semantica principale della pagina e raggruppamento figlio.
Contenuti modificabili dall'amministratore Nessuna copia visibile. settings.layout_name opzionale contiene solo i metadati dell'editor.
Impostazioni spacing: empty, sm, lg; flow: normal, offset-up, overlap-previous; sfondo opzionale media_id; background_position: center, top, bottom, left, right; background_overlay: soft, medium, strong, none.
Bambini Qualsiasi tipo figlio pubblicato supportato; almeno un figlio renderizzabile è richiesto dai piani API.
HTML Proprietario della radice <section class="wb-section [wb-section-sm or wb-section-lg] [wb-public-section--offset-up or wb-public-section--overlap-previous] wb-stack" data-wb-public-block-type="section">…</section>. Il supporto in background aggiunge hook di classe/stile di proprietà del pacchetto. I modificatori di flusso si ripristinano su schermi piccoli.
Aspetto di esempio Una fascia tematica a tutta larghezza contenente un contenitore vincolato o una fascia deliberatamente spostata che rompe il ritmo verticale uniforme.
Evitare Testo visibile nelle impostazioni, chrome vuoto, utilizzo della sezione come scheda o sovrapposizione di più sezioni consecutive.

container — Contenitore

Area contrattuale Comportamento basato sulla fonte
Scopo Vincolo di larghezza e flusso figlio opzionale.
Contenuti modificabili dall'amministratore Nessuna copia visibile; solo editor opzionale layout_name.
Impostazioni width: empty, sm, md, lg, xl, full; flow: stack or none.
Bambini Qualsiasi tipo figlio pubblicato supportato; almeno un figlio richiesto dai piani API.
HTML <div class="wb-container [wb-container-*] [optional wb-stack]" data-wb-public-block-type="container">…</div> proprietario della radice; wb-stack richiede flow: stack esplicito.
Aspetto di esempio Contenuto della pagina centrato con una larghezza massima; l'impostazione predefinita neutra si compone direttamente con un cluster all'interno della Navbar.
Evitare Trattare la larghezza come una superficie, una carta o un ruolo tematico.

stack — Pila

Area contrattuale Comportamento basato sulla fonte
Scopo Flusso verticale e ritmo coerente tra blocchi figlio diretti.
Contenuti modificabili dall'amministratore Nessuna copia visibile; solo editor opzionale layout_name.
Impostazioni spacing: empty/default, 1, 2, 3, 4, 6, 8.
Bambini Qualsiasi tipo figlio pubblicato supportato; almeno un figlio richiesto dai piani API.
HTML Proprietario della radice <div class="wb-stack [wb-stack-{n}]" data-wb-public-block-type="stack">…</div>.
Aspetto di esempio Un nome del prodotto, una descrizione e una nota di supporto disposti dall'alto verso il basso.
Evitare Controllo della larghezza della pagina, azioni orizzontali o colonne uguali.

split — Diviso

Area contrattuale Comportamento basato sulla fonte
Scopo Composizione bifacciale dove il primo bambino cresce e il secondo resta a misura di contenuto.
Contenuti modificabili dall'amministratore Nessuna copia visibile; solo editor opzionale layout_name.
Impostazioni gap: empty/default, 0, 1, 2, 3, 4, 6, 8; items_alignment: center/default, start, end, stretch; width: auto/default or full; responsive: stack or preserve. New admin/API blocks default to stack while existing empty settings preserve the legacy row.
Bambini Esattamente due figli diretti. Metti una pila all'interno di uno dei due lati quando quel lato ha bisogno di più blocchi.
HTML <div class="wb-split …" data-wb-public-block-type="split">…</div> con proprietario root con classi wb-* consentite. Lo stack reattivo aggiunge .wb-public-split--stack-mobile di proprietà del pacchetto e passa a una colonna a larghezza intera a 48rem e inferiore.
Aspetto di esempio Identità del prodotto a sinistra e prezzo più azione di acquisto a destra.
Evitare Colonne uguali ripetute, gruppi di pulsanti di spostamento o più di due elementi secondari diretti.

cluster — Grappolo

Area contrattuale Comportamento basato sulla fonte
Scopo Composizione orizzontale o in linea, in particolare azioni e elementi interni della barra di navigazione.
Contenuti modificabili dall'amministratore Nessuna copia visibile; solo editor opzionale layout_name.
Impostazioni gap: empty, none, xs, sm, md, lg; alignment: start/default, center, end, between; items_alignment: center/default, start, end, stretch; wrap: wrap/default or nowrap; width: auto/default or full.
Bambini Qualsiasi tipo figlio pubblicato supportato; almeno un figlio richiesto dai piani API.
HTML <div class="wb-cluster …" data-wb-public-block-type="cluster">…</div> con proprietario root con classi wb-* consentite.
Aspetto di esempio Una riga CTA reattiva a due pulsanti o una riga brand/navigazione/azioni.
Evitare Grandi griglie di carte ripetute.

grid — Griglia

Area contrattuale Comportamento basato sulla fonte
Scopo Layout multicolonna reattivo.
Contenuti modificabili dall'amministratore Nessuna copia visibile; solo editor opzionale layout_name.
Impostazioni columns: 2, 3, 4; ratio: equal, lead-left, lead-right (asymmetric ratios apply only to two columns); gap: empty, 3, 4, 6; alternate_media_text_sections: boolean; alternate_start: media_left or text_left.
Bambini Qualsiasi tipo figlio pubblicato supportato; almeno un figlio richiesto dai piani API.
HTML Proprietario della radice <div class="wb-grid wb-grid-{n} [wb-gap-{n}] [wb-public-grid--lead-*]" data-wb-public-block-type="grid">…</div>. I rapporti lead vengono visualizzati come 2:1 o 1:2 sopra il normale punto di interruzione mobile a una colonna. La modalità alternata può modificare l'ordine figlio diretto senza modificare la radice.
Aspetto di esempio Tre blocchi di carte in una riga di caratteristiche o gruppi di immagini/contenuti accoppiati alternati a sinistra e a destra.
Evitare Tabelle semantiche o una riga di azioni compatta.

card — Carta

Area contrattuale Comportamento basato sulla fonte
Scopo Piano componibile con cornice.
Contenuti modificabili dall'amministratore Nessuna copia principale visibile normale; solo editor opzionale layout_name. Le righe delle carte legacy senza regione potrebbero ancora visualizzare la vecchia copia.
Impostazioni Stile scheda opzionale sulla colonna variant condivisa: flat, muted, highlight, accent; uno variant vuoto rende la carta predefinita. Immagine di sfondo opzionale media_id, background_position, background_overlay. Gli optional url e target rendono l'intera Carta componibile un unico collegamento semantico.
Bambini Bambini diretti limitati a card_header, card_body, card_footer; almeno un figlio richiesto dai piani API.
HTML <article class="wb-card">…</article> di proprietà root o <a class="wb-card wb-no-decoration">…</a> quando è configurato un URL dell'intera scheda. Le carte collegate non devono contenere controlli interattivi nidificati.
Aspetto di esempio Intestazione di immagine o icona, contenuto del corpo modificabile e piè di pagina dell'azione all'interno di una shell della scheda nativa.
Evitare Schede nidificate all'interno di Schede o utilizzando la copia principale legacy per nuovi contenuti.

card_header — Intestazione della carta

Area contrattuale Comportamento basato sulla fonte
Scopo Regione dell'intestazione all'interno della scheda.
Contenuti modificabili dall'amministratore Nessuna copia diretta; i blocchi secondari contengono contenuti. Solo editor opzionale layout_name.
Impostazioni icon_slug dal catalogo delle icone dei contenuti attivi; icon_tone: default, soft, brand, accent, highlight, bold, quiet; icon_size: default, sm, lg, xl.
Bambini Bambini con contenuti strutturati. Non nidificare i blocchi della regione della carta. Il posizionamento normale è direttamente sotto Card.
HTML Proprietario della radice <div class="wb-card-header" data-wb-public-block-type="card-header">[icon]…</div>.
Aspetto di esempio Riga del titolo della scheda con un'icona del catalogo e intestazione/testo semplice nidificati.
Evitare Posizionamento fuori card.

card_body — Corpo della scheda

Area contrattuale Comportamento basato sulla fonte
Scopo Area del contenuto principale all'interno della Card.
Contenuti modificabili dall'amministratore Nessuna copia diretta; i blocchi secondari contengono contenuti. Solo editor opzionale layout_name.
Impostazioni Nessuna impostazione visiva pubblica oltre al solo editor layout_name.
Bambini Bambini con contenuti strutturati; I piani API ne richiedono almeno uno. Non nidificare i blocchi della regione della carta.
HTML Possessore di radice <div class="wb-card-body" data-wb-public-block-type="card-body">…</div>.
Aspetto di esempio Copia della scheda, Immagine, Rich Text o un piccolo gruppo di pulsanti.
Evitare Posizionamento fuori card.
Area contrattuale Comportamento basato sulla fonte
Scopo Regione di sostegno o di azione all'interno del Card.
Contenuti modificabili dall'amministratore Nessuna copia diretta; i blocchi secondari contengono contenuti. Solo editor opzionale layout_name.
Impostazioni Nessuna impostazione visiva pubblica oltre al solo editor layout_name.
Bambini Bambini con contenuti strutturati; I piani API ne richiedono almeno uno. Non nidificare i blocchi della regione della carta.
HTML Possessore di radice <div class="wb-card-footer" data-wb-public-block-type="card-footer">…</div>.
Aspetto di esempio Uno o due elementi secondari Button Link allineati da un Cluster nidificato.
Evitare Posizionamento fuori card.

slider — Dispositivo di scorrimento

Area contrattuale Comportamento basato sulla fonte
Scopo Giostra componibile che riempie il contenitore posizionato.
Contenuti modificabili dall'amministratore Nessuna copia principale visibile; solo editor opzionale layout_name.
Impostazioni height: auto, fill, viewport, large, medium, small, custom; opzionale min_height; aspect_ratio: 16/9, 4/3, 1/1; interval_ms: 1000–30000; booleani autoplay, pause_on_hover, show_arrows, show_dots, loop, swipe, keyboard; overlay: none/default, soft, medium, dark, strong; content_position: center/default, center-left, center-right, top-left, top-center, top-right, bottom-left, bottom-center, bottom-right; content_width: medium/default, narrow, wide, full; text_color: auto/default, light, dark; background_fit: cover/default or contain. Transition is currently normalized to slide.
Bambini Solo slide; è richiesta almeno una diapositiva.
HTML <section class="wb-slider …" data-wb-slider data-wb-public-block-type="slider"> con root con viewport, traccia, frecce opzionali e punti.
Aspetto di esempio Carosello di eroi a larghezza intera, dispositivo di scorrimento contenente schede o pannelli multimediali di sfondo con contenuti secondari modificabili.
Evitare Gallerie di immagini statiche.

slide — Diapositiva

Area contrattuale Comportamento basato sulla fonte
Scopo Un pannello all'interno di Slider.
Contenuti modificabili dall'amministratore Nessuna copia visibile diretta; layout_name solo editor opzionale e aria_label condiviso.
Impostazioni Immagine di sfondo media_id; background_position; background_overlay (none, soft, medium, strong - ciascuno esegue il rendering di una tela distinta da WebBlocks UI 2.22.0; prima che medium collassasse su strong); content_position: center/default, center-left, center-right, top-left, top-center, top-right, bottom-left, bottom-center, bottom-right; content_width; text_color; background_fit.
Bambini Qualsiasi tipo figlio strutturato supportato; è consentita una diapositiva solo in background. Il genitore normale è Slider.
HTML Possessore di root <article class="wb-slide …" data-wb-public-block-type="slide">[img.wb-slide-media]<div class="wb-slide-content">…</div></article>.
Aspetto di esempio Foto di sfondo del prodotto con contenuto di intestazione, testo semplice e collegamento a pulsante nidificati.
Evitare Utilizzo autonomo di livello superiore quando non è prevista la semantica del carosello.

Blocchi editoriali e di marketing

header — Intestazione

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title.
Impostazioni e varianti settings.variant: h1–h6; alignment: left, center, right; anchor: safe same-page ID.
Bambini/media Nessuno.
HTML Possessore di root da <h1> a <h6> con classe di allineamento opzionale e id.
Aspetto di esempio Intestazione di sezione semantica che può essere indicizzata tramite TOC.
Evitare Introduzione alla pagina con metadati; utilizzare l'intestazione del contenuto.

plain_text — Testo semplice

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.content come testo semplice con escape.
Impostazioni e varianti alignment: left, center, right.
Bambini/media Nessuno.
HTML Wrapper generico più <p class="[wb-text-*]">…</p>.
Aspetto di esempio Breve paragrafo, etichetta o frase di supporto.
Evitare Elenchi, collegamenti, intestazioni o testo formattato del corpo.

rich-text — Testo ricco

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.content tramite l'editor e disinfettante Rich Text sicuro; la cronologia dell'editor supporta l'annullamento/ripetizione, con un contatore di parole e una modalità di messa a fuoco opzionale.
Impostazioni e varianti Nessuno. La formattazione, gli attributi e le classi non supportati vengono rimossi; le intestazioni incollate e le celle della tabella mantengono il testo come paragrafi e il markup eseguibile/media viene rimosso.
Bambini/media Nessuno.
HTML Wrapper generico più <div class="wb-rich-text">[sanitized editorial markup]</div>.
Aspetto di esempio Diversi paragrafi con enfasi in linea sicura, collegamenti ed elenchi semplici.
Evitare Markup del layout, <style>, script, iframe, moduli, pulsanti, tabelle o una pagina completa.

content_header — Intestazione contenuto

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle come introduzione, translations.eyebrow come etichetta badge opzionale, translations.meta come elementi di metadati.
Impostazioni e varianti alignment: left, center, right; icon_slug; icon_tone; icon_size: default, sm, lg, xl; badge_tone: neutral, info, success, warning, danger; immagine di sfondo opzionale e impostazioni di sovrapposizione.
Bambini/media Niente bambini; l'immagine diretta media_id è un supporto di sfondo.
HTML <header class="wb-content-header …"> con root con cluster di icone/badge opzionale, <h1 class="wb-content-title"> fisso, sottotitoli e riga di metadati.
Aspetto di esempio Titolo della pagina con badge/icona del prodotto opzionale, testo conciso e due etichette di metadati.
Evitare Sezioni nidificate in cui H1 è semanticamente sbagliato.

hero — Eroe

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle come sopracciglio, translations.content. I pulsanti di azione sono blocchi secondari button_link separati con il proprio modulo di amministrazione.
Impostazioni e varianti variant: default, muted, soft, accent; layout: left, centered, split, or full-bleed; title_tag: h1, h2, h3; immagine di sfondo opzionale e impostazioni di sovrapposizione.
Bambini/media Le azioni sono blocchi button_link secondari, senza conteggio fisso. Nei layout a sinistra/centrato/al vivo media_id è il supporto di sfondo; in divisione viene visualizzato come immagine in primo piano accanto alla copia.
HTML I layout legacy possiedono <section class="wb-card wb-promo [wb-card-*]">; split aggiunge .wb-promo--split e .wb-promo-media. Full-bleed elimina deliberatamente la classe della carta e utilizza .wb-public-hero--full-bleed con un .wb-public-hero__copy allineato.
Aspetto di esempio Un promo contenuto, un'immagine in primo piano/copia divisa o un eroe fotografico senza cornice a livello di viewport, oltre ad azioni.
Limitazione dura Nessuna seconda immagine in primo piano, regione con prezzo del prodotto/striscia di attendibilità o contenuto nidificato arbitrario.
Azioni Aggiungi bambini button_link; vengono visualizzati all'interno di .wb-promo-actions. Gli oggetti primary_cta / secondary_cta {label, url} rimangono accettati come una abbreviazione che scrive i primi due di questi figli. Non cercare un cluster fratello con Button Link, che viene visualizzato all'esterno della radice promozionale. allowed_child_handles elenca anche il pulsante legacy, che non ha una riga di catalogo pubblicata e rimane in unreachable_child_handles.

cta — CTA Scarica

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle come sopracciglio, translations.content. I pulsanti di azione sono blocchi secondari button_link separati con il proprio modulo di amministrazione.
Impostazioni e varianti variant: default, muted, soft, accent; immagine di sfondo opzionale e impostazioni di sovrapposizione. Il titolo CTA viene visualizzato come H2.
Bambini/media Le azioni sono blocchi button_link secondari, senza conteggio fisso; l'immagine diretta media_id è un supporto di sfondo.
HTML <section class="wb-card wb-promo [wb-card-*]"> con root con .wb-promo-copy e riga di azioni opzionale.
Aspetto di esempio Breve banda di conversione verso la fine di una pagina.
Azioni Identico a Hero: aggiungi i bambini button_link o usa la scorciatoia primary_cta / secondary_cta.
Limitazione settings.layout=centered è compatibile con il renderer ma non è esposto dal normale modulo di amministrazione CTA e non è un campo di creazione AI consigliato.

columns — Colonne

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle, translations.content; titolo dell'elemento secondario, badge, contenuto, URL, icona e toni.
Impostazioni e varianti settings.variant: cards, plain, stats. New Internal Content API plans default an omitted variant to plain; cards deve essere intenzionale. I blocchi archiviati esistenti con una variante vuota mantengono il fallback del renderer legacy cards.
Bambini/media Solo column_item. Il conteggio figlio seleziona il layout in pila, a 2 colonne, a 3 colonne o a 4 colonne.
HTML <section class="wb-stack wb-gap-4"> con root con introduzione opzionale e griglia di oggetti reattiva.
Aspetto di esempio Tre carte vantaggi, quattro funzioni compatte o una semplice riga metrica.
Avvertenza sulla gestibilità Il renderer delle statistiche può utilizzare il figlio subtitle come valore, ma i normali moduli di amministrazione degli elementi di colonna non espongono subtitle. Le statistiche create dall'intelligenza artificiale che dipendono da essa non sono completamente gestibili e dovrebbero essere evitate finché il contratto del modulo non sarà allineato.

column_item — Elemento di colonna

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content, badge translations.eyebrow opzionale; condiviso settings.url, icon_slug, icon_tone, icon_size, badge_tone.
Impostazioni e varianti La presentazione è controllata dalla variante Colonne principale: carte, semplici o statistiche.
Bambini/media Nessuno; inteso solo in Colonne.
HTML Carte: .wb-card > .wb-card-body; plain: .wb-icon-card; stats: .wb-stat. Optional safe link wraps cards/plain output.
Aspetto di esempio Scheda funzione icona e copia con badge opzionale.
Evitare Utilizzo autonomo o affidamento solo ai sottotitoli del renderer per un valore statistico.

Utilizzare plain per qualità, principi, vantaggi, riepiloghi dei processi e altri testi che non rappresentano oggetti indipendenti. Utilizzare cards solo quando ogni elemento ha un proprio confine significativo. Il numero di oggetti, in particolare il familiare set da tre, non è mai di per sé un motivo per scegliere le carte.

feature-grid — Griglia delle funzionalità

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, subtitle, content; campi delle caratteristiche secondarie.
Impostazioni e varianti Nessuna variante di presentazione indipendente. Il renderer forza la presentazione delle schede Colonne e preferisce tre colonne.
Bambini/media feature-item e compatibilità column_item.
HTML Delega alle colonne ed esegue il rendering di una griglia di carte. Non è elencato come proprietario root da Block::ownsPublicRoot, quindi l'output di livello superiore potrebbe ricevere un wrapper generico attorno alla root della sezione delegata.
Aspetto di esempio Carte caratteristiche legacy da tre.
Raccomandazione Per le nuove pagine preferisci Colonne/Elemento colonna o Griglia/Scheda; utilizzare Feature Grid solo quando il suo editor dedicato è prezioso e il contratto delegato è accettato.

feature-item — Elemento caratteristico

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content, etichetta badge opzionale; URL condiviso, lumaca/tono dell'icona, tono del badge.
Impostazioni e varianti Delega sempre alla presentazione delle schede Articolo di colonna.
Bambini/media Nessuno; previsto nella griglia delle funzionalità.
HTML .wb-card > .wb-card-body > .wb-icon-card with optional icon and badge.
Aspetto di esempio Una scheda funzionalità guidata da icone.
Raccomandazione Preferisci le regioni canoniche della scheda o l'elemento colonna per nuove composizioni di uso generale.

stat-card — Carta delle statistiche

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Etichetta translations.subtitle, valore translations.title, dettaglio translations.content; URL condiviso.
Impostazioni e varianti Nessuno.
Bambini/media Nessuno.
HTML Wrapper generico più .wb-stat, .wb-stat-label, .wb-stat-value, .wb-stat-meta e il collegamento facoltativo Ulteriori informazioni.
Aspetto di esempio Valore “24h” con etichetta “Spedizione” e dettaglio di supporto.
Evitare Scheda di marketing decorativa in cui sono necessari contenuti nidificati arbitrari.

image — Immagine

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Immagine di proprietà locale alt_text e caption; URL facoltativo condiviso.
Impostazioni e varianti viewer_enabled inserisce un'immagine non collegata nel visualizzatore della galleria CMS; viewer_group unisce blocchi di immagini posizionati in modo indipendente in un unico set di visualizzatori esplorabili. Il punto focale e le varianti generate appartengono al record Media.
Bambini/media Immagine diretta media_id; niente bambini.
HTML <figure class="wb-stack wb-gap-2"> con root con output <img> reattivo, immagine collegata o wb-gallery-trigger opzionale e <figcaption>. I gruppi abilitati registrano una modale di visualizzazione di gallerie esistente nella radice canonica dell'overlay.
Aspetto di esempio Immagine del prodotto o editoriale con una didascalia modificabile.
Evitare Trattamento di fondo o disposizione decorativa HTML. Utilizza Galleria quando la raccolta stessa deve essere visualizzata come un'unica griglia; utilizzare i gruppi di visualizzatori quando le immagini composte in modo indipendente devono condividere un visualizzatore senza modificare il layout.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Elementi della Galleria ordinati con alt_text, caption, overlay_title, overlay_text di proprietà locale; titolo visualizzatore condiviso opzionale. Il testo dell'introduzione alla Galleria è intenzionalmente separato.
Impostazioni e varianti variant: grid, masonry, collage; columns: 2–5; gap: none, sm, md, lg; aspect_ratio: auto, square, 4:3, 16:9, portrait; captions_mode: hidden, below, overlay, on-hover; overlay_mode: none, gradient, solid; lightbox_enabled: boolean.
Bambini/media Immagine di riferimento gallery_items o gallery_media_ids Record multimediali; nessun blocco bambini.
HTML .wb-gallery.wb-gallery--{variant} di proprietà della root con elementi della galleria, contenuti multimediali reattivi, didascalie e visualizzatore opzionale di proprietà del registro sotto la root overlay canonica.
Aspetto di esempio Griglia di prodotti uguali, muratura editoriale ad altezza naturale o collage in primo piano.
Evitare Aggiunta di intestazione/descrizione nella Galleria; comporre l'intestazione del contenuto o il testo RTF prima di esso.

download — Scaricamento

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Etichetta del pulsante translations.title e copia helper translations.subtitle.
Impostazioni e varianti settings.variant: primary, secondary, ghost.
Bambini/media Documento diretto/altro media_id; niente bambini.
HTML Possessore di root .wb-stack.wb-gap-2 con <a class="wb-btn …" download> e paragrafo di supporto opzionale.
Aspetto di esempio Pulsante “Scarica guida” con descrizione del file.
Evitare Schede solo esterne; utilizzare File.

: file Galleria

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content; Fallback URL condiviso.
Impostazioni e varianti Nessuno.
Bambini/media Documento diretto/altro media_id; i media prevalgono sugli URL esterni sicuri.
HTML Scheda disattivata di proprietà root con titolo, descrizione, pulsante di download/apertura e metadati del file.
Aspetto di esempio Scheda delle risorse PDF scaricabile.
Evitare Download semplici solo tramite pulsanti.

— Video

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content; fallback URL sicuro condiviso.
Impostazioni e varianti La sorgente determina il video nativo, l'iframe YouTube/Vimeo o il pulsante di apertura video.
Bambini/media Video diretto media_id; niente bambini.
HTML Scheda disattivata di proprietà root contenente <video>, un provider <iframe> incluso nella lista consentita o un collegamento sicuro.
Aspetto di esempio Video dimostrativo caricato con titolo e descrizione modificabili.
Evitare Iframe arbitrario HTML.

: audio

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content; fallback URL HTTP sicuro condiviso.
Impostazioni e varianti Nessuno.
Bambini/media L'amministratore e il renderer supportano i media audio selezionati; niente bambini.
HTML Scheda disattivata di proprietà root con copia e <audio controls> nativo.
Aspetto di esempio Lezione audio o riproduttore di campioni.
Divario API La lista consentita direct-media del piano di contenuti controllata omette l'audio, quindi l'assegnazione media_id viene rifiutata anche se l'amministratore e il renderer la supportano. Utilizza un URL sicuro rivisto solo quando appropriato o correggi il contratto API prima dell'assegnazione dei media AI.

code — Codice

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle nome file/etichetta lingua, corpo codice translations.content.
Impostazioni e varianti settings.language diventa igienizzato data-language.
Bambini/media Nessuno.
HTML Involucro generico più <pre><code data-language="…">…</code></pre>.
Aspetto di esempio Comando dall'aspetto copiabile o snippet di origine.
Evitare Prosa, layout o script eseguibili.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title come etichetta del pulsante; condiviso settings.url. Al momento del rendering pubblico, un percorso interno segue la locale di rendering (riscritta nel percorso tradotto della pagina di destinazione quando si risolve); il valore memorizzato rimane condiviso e grezzo.
Impostazioni e varianti settings.target: _self or _blank; condiviso variant: primario/predefinito o secondario. L'URL accetta un URL HTTP(S) completo sicuro, un percorso del sito, un ancoraggio, una destinazione mailto: o tel:.
Bambini/media Nessuno. Questa è un'azione editoriale autonoma ed è distinta dal figlio button gestito senza catalogo utilizzato da Hero e CTA.
HTML Wrapper generico più <a class="wb-btn wb-btn-primary"> o il suo equivalente di classe secondaria; _blank aggiunge rel="noopener noreferrer". L'URL vuoto o non sicuro non genera alcun ancoraggio.
Aspetto di esempio Un'azione primaria o secondaria gestita o più azioni organizzate da un Cluster.
Evitare Ancoraggi hardcoded in HTML o sostituendolo con l'azione secondaria gestita interna di Hero/CTA quando l'azione deve essere visualizzata all'interno di quella radice promozionale.

table — Tavolo

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title; translations.content come righe separate da una nuova riga e delimitate da barre verticali.
Impostazioni e varianti settings.variant: header-row/default or plain. Legacy settings.rows remains readable but is not recommended for new API content.
Bambini/media Nessuno.
HTML Wrapper generico contenente .wb-table-wrap > table.wb-table, <thead> opzionale e <tbody>.
Aspetto di esempio Piccola tabella comparativa o specifica.
Evitare Griglie di layout di pagina o set di dati interattivi.

quote — Citazione

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Citazione translations.content, parti di attribuzione translations.title e translations.subtitle.
Impostazioni e varianti settings.variant: default or testimonial.
Bambini/media Nessuno.
HTML Wrapper generico con <blockquote class="wb-stack wb-gap-2">; testimonial aggiunge un guscio di carta disattivato.
Aspetto di esempio Citazione editoriale o testimonianza del cliente.
Evitare Callout di uso generale.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle, translations.content; copia del collegamento figlio.
Impostazioni e varianti settings.row_layout: index (default), stacked puts each row description under its title. settings.list_frame: joined (default), cards gives each row its own card. Independent; entrambi sono scrivibili tramite l'API.
Bambini/media Solo link-list-item.
HTML Wrapper generico con stack intro opzionale e .wb-link-list, più wb-link-list--stacked / wb-link-list--cards per gli stili selezionati.
Aspetto di esempio Indice delle risorse con titolo, metadati, descrizione, icone e badge.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Badge translations.title richiesto, subtitle, content e eyebrow opzionali; URL richiesto condiviso.
Impostazioni e varianti icon_slug, icon_tone, icon_size, badge_tone.
Bambini/media Miniatura immagine opzionale media_id; previsto nell'elenco dei collegamenti.
HTML <a class="wb-link-list-item"> with an optional leading thumbnail or icon (adding wb-link-list-item--media), title/meta/badge, and optional description.
Aspetto di esempio Riga della documentazione/risorsa contrassegnata come "Nuovo".
Render guardia Emette solo con un URL e un titolo sicuri.

page-list — Elenco pagine

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Nessuna copia della pagina. Titoli, descrizioni e miniature provengono dalla traduzione di ciascuna pagina elencata: name, quindi list_excerpt che ritorna a seo_description, quindi og_image_media_id.
Impostazioni e varianti scope (page_type, path_prefix, subtree_of_current), page_type, path_prefix, sort, limit (1-48), layout (cards/links), columns, show_thumbnail, show_description, exclude_current, clickable_card.
Bambini/media Nessuno dei due. Le righe provengono da una query di pagina; le miniature si risolvono dall'immagine Open Graph della traduzione di ogni pagina.
HTML wb-grid di articoli wb-card (o radici della scheda a collegamento singolo quando clickable_card è abilitato) o wb-link-list di ancoraggi wb-link-list-item.
Aspetto di esempio Un indice di tre colonne di schede guida, ciascuna collegata dal proprio titolo.
Render guardia Non genera nulla quando la query non restituisce pagine o mentre l'ambito non è configurato. Lo stato pubblicato, il sito, la traduzione locale di rendering, le pagine di origine Shared Slot e la pagina di hosting vengono filtrati nella query e non sono impostazioni.

application — Blocco dell'applicazione

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Nessuna copia editoriale. Seleziona un'applicazione incorporata registrata nel database tramite application_handle stabile.
Impostazioni e varianti application_settings viene convalidato rispetto allo schema di definizione selezionato. Le impostazioni di presentazione di proprietà del CMS sono width, loading, aspect_ratio, min_height, show_loading_state e show_failure_state.
Bambini/media Nessuno dei due. Le risorse eseguibili appartengono alla definizione dell'applicazione registrata e non possono essere fornite tramite contenuto di blocco o Media.
HTML Le applicazioni in linea ricevono uno .wb-application__mount generato; Le applicazioni iframe ricevono un iframe sandbox di proprietà del CMS. CSS e JavaScript dichiarati dalle definizioni pronte vengono caricati una volta per pagina.
Creazione API Scrivibile tramite la convalida/applicazione del contenuto e la patch delle impostazioni di blocco diretto. Scopri maniglie con GET /webadmin/api/applications e schemi con /applications/{application}/schema; queste letture richiedono applications.read. La mutazione del registro non è esposta.
Render guardia Le definizioni mancanti, non valide o duplicate non caricano le risorse né vengono eseguite. Non visualizzano nulla a meno che lo stato di errore generico tradotto del blocco non sia abilitato.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Nessuna copia della pagina; menu di navigazione CMS selezionato.
Impostazioni e varianti menu_key dalle posizioni di menu conosciute. Le chiavi piè di pagina/legali visualizzano collegamenti in pila; primario/predefinito esegue il rendering dei collegamenti in stile pulsante raggruppati.
Bambini/media Registra la navigazione, non blocca i bambini.
HTML Wrapper generico più albero semantico <nav> e <ul>.
Aspetto di esempio Menu di navigazione di compatibilità in uno slot.
Raccomandazione Preferisci la navigazione Navbar per le nuove intestazioni condivise.
Lacuna anagrafica dei contratti Questo handle pubblicato ha un modulo di amministrazione e un renderer ma nessuna voce in BlockTypeContractRegistry nella base di controllo. Non dedurre un contratto API attivo completo finché la scoperta non lo conferma.

toc — SOMMARIO

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Titolo condiviso facoltativo.
Impostazioni e varianti Nessuno.
Bambini/media Legge i blocchi di intestazione pubblicati nello stesso slot con ancoraggi validi e varianti H2/H3, nell'ordine dei documenti.
HTML Wrapper generico con un elenco di collegamenti nav.wb-section-nav generato: una primitiva WebBlocks UI autonoma, non wb-link-list.
Comportamento dal vivo L'evidenziazione della posizione di scorrimento è gratuita dal modulo WBSectionNav fornito nello stesso webblocks-ui.js già caricato dal layout pubblico; il renderer non possiede alcun JavaScript.
Aspetto di esempio Elenco "Contenuto" per una lunga pagina di documentazione.
Render guardia Non emette nulla quando non esistono intestazioni ammissibili.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Condiviso home_label; il titolo della pagina corrente proviene dalla pagina.
Impostazioni e varianti include_current: boolean.
Bambini/media Utilizza il contesto pagina/sito/locale.
HTML Wrapper generico più <nav class="wb-breadcrumb"><ol class="wb-breadcrumb-list">…</ol></nav>.
Aspetto di esempio Home / Categoria / Pagina corrente.

header-actions — Azioni di intestazione

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Nessuna copia.
Impostazioni e varianti Booleani show_search, show_mode_toggle, show_accent_toggle, show_language_switcher. I controlli preimpostati/accenti pubblici sono attualmente soppressi dal modello di tema pubblico a livello di sito.
Bambini/media Nessuno.
HTML Wrapper generico più controlli compatti delle icone .wb-topbar-actions.
Aspetto di esempio Azioni di ricerca e modalità chiaro/scuro/automatica sul lato destro della barra di navigazione.
Evitare CTA aziendali.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Nessuna copia diretta; solo editor opzionale layout_name.
Impostazioni e varianti sticky_mode: sticky/default, static, fixed.
Bambini/media Bambini consentiti: contenitore, cluster, intestazione, plain_text, rich-text, button_link, navbar-brand, navbar-navigation, header-actions, search-form. Almeno un bambino richiesto dai piani API.
HTML Possessore di radice <nav class="wb-navbar …" data-wb-public-block-type="sticky-navbar">…</nav>.
Aspetto di esempio Intestazione condivisa: Barra di navigazione → Contenitore → Cluster (tra) → Marchio + navigazione/azioni.
Evitare Una seconda shell di intestazione personalizzata.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle; URL condiviso, destinazione, etichetta aria.
Impostazioni e varianti url; target: _self or _blank; aria_label.
Bambini/media Immagine opzionale media_id per logo.
HTML Wrapper generico più <a class="wb-navbar-brand"> con immagine opzionale e copia identità.
Aspetto di esempio Logo, nome del sito e slogan conciso.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Titolo condiviso come etichetta ARIA; menu di navigazione selezionato.
Impostazioni e varianti menu_key; active_indicator: underline, pill, dot, background, none; active_matching: path, section, current-page, exact, off.
Bambini/media Albero degli elementi di navigazione CMS.
HTML Wrapper generico più desktop .wb-navbar-links, menu a discesa mobile WebBlocks UI, classi attive e menu a discesa di gruppo.
Aspetto di esempio Navigazione primaria reattiva con menu hamburger automatico.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.subtitle; URL condiviso, destinazione, etichetta aria.
Impostazioni e varianti Stesso contratto di collegamento sicuro del marchio Navbar.
Bambini/media Immagine opzionale media_id per logo.
HTML Involucro generico più <a class="wb-sidebar-brand"> con logo e copia identità.
Aspetto di esempio Logo/titolo della documentazione nella parte superiore di una barra laterale.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title come etichetta ARIA; solo editor opzionale layout_name.
Impostazioni e varianti Opzionale menu_key; show_icons: boolean; active_matching: path, current-page, exact.
Bambini/media O record di navigazione CMS o sidebar-nav-item / sidebar-nav-group manuale; nei piani API manuali è richiesto almeno un figlio.
HTML Wrapper generico più strutture delle barre laterali <nav class="wb-sidebar-nav"> e WebBlocks UI.
Aspetto di esempio Barra laterale della documentazione con indicazione della sezione attiva.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Richiesto translations.title; URL e destinazione condivisi.
Impostazioni e varianti icona dal catalogo; active_mode: exact, path, current-page, manual; manual_active: boolean.
Bambini/media Nessuno; previsto in Navigazione barra laterale o Gruppo di navigazione barra laterale.
HTML <a class="wb-sidebar-link"> or nested .wb-nav-group-item, with optional icon and active state.
Aspetto di esempio Collegamento alla documentazione manuale.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Richiesto translations.title; solo editor opzionale layout_name.
Impostazioni e varianti icon; initially_open: boolean.
Bambini/media Solo sidebar-nav-item.
HTML .wb-nav-group with button toggle, arrow, icon, and .wb-nav-group-items.
Aspetto di esempio Gruppo "Guide" comprimibile nella barra laterale dei documenti.

search-form — Modulo di ricerca

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile Etichetta translations.title, segnaposto translations.content, etichetta di invio translations.subtitle.
Impostazioni e varianti settings.variant: primary or secondary; show_button: boolean.
Bambini/media Nessuno; richiede un percorso di ricerca del sito risolvibile.
HTML Wrapper generico più <form role="search" class="wb-cluster …">, input nativo e pulsante WebBlocks opzionale.
Aspetto di esempio Campo di ricerca del sito in un'intestazione o in una pagina.
Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, translations.content, translations.subtitle nota a piè di pagina.
Impostazioni e varianti settings.variant: info, success, warning, danger.
Bambini/media Nessuno.
HTML Wrapper generico più .wb-sidebar-footer, .wb-callout tonico e nota disattivata opzionale.
Aspetto di esempio Piccolo avviso di documentazione o nota sulla versione.

Blocchi modello, modulo e coinvolgimento

alert — Avviso

Area contrattuale Comportamento basato sulla fonte
Contenuto modificabile translations.title, richiesto translations.content.
Impostazioni e varianti settings.variant: info, success, warning, danger.
Bambini/media Nessuno.
HTML Wrapper generico più <div class="wb-alert wb-alert-{tone}"> e titolo opzionale.
Aspetto di esempio Avviso in linea, nota di successo o messaggio informativo.
Evitare Promozioni di marketing.

contact_form — Modulo di contatto

Area contrattuale Comportamento supportato dall'origine
Contenuto modificabile Di proprietà della locale title, content, submit_label, success_message, consent_label.
Impostazioni e varianti recipient_email; send_email_notification; store_submissions rimane di proprietà del prodotto nel contratto nativo; consent_required (booleano, predefinito falso).
Consenso Impostare consent_required e fornire alla locale un consent_label per visualizzare una casella di controllo del consenso richiesto. La dicitura è tradotta perché è l'avviso. Un invio accettato memorizza consent_accepted_at più una copia del testo, quindi la modifica del blocco in un secondo momento non può modificare ciò a cui viene registrato un visitatore precedente che ha accettato. Un consenso richiesto senza dicitura per la locale risolta non visualizza alcuna casella di controllo anziché una senza etichetta. consent_required è chiuso a PATCH: la rimozione di un avviso legale da un modulo attivo è una decisione dell'operatore.
Criterio di notifica del sito I moduli di contatto e i plugin partecipanti condividono Site.notification_settings, letti GET /webadmin/api/sites/{site}/notifications (content.read) e modificati tramite PATCH (site-settings.write, con ambito sito). Campi: notification_mode (full, alert_only), notification_frequency (immediate, batched, daily), batch_minutes (1–60), daily_summary (booleano), summary_hour (0–23 nel fuso orario del sito). I campi PATCH omessi vengono conservati; i valori non validi, nulli e sconosciuti vengono rifiutati. Queste sono le impostazioni del sito, non bloccano mai i campi PATCH.
Privacy delle notifiche alert_only dispone di copia del sito attendibile, conteggi e solo collegamenti alla posta in arrivo CMS autenticati normali. Nessun nome/indirizzo del visitatore, oggetto/corpo, IP, informazioni sul browser, URL/referrer di origine, risposta del visitatore, intestazioni o allegati personalizzati. Gli invii postali minimi separati non ricevono mai modelli visitatore. full conserva notifiche dettagliate, inclusi lotti dettagliati. I riepiloghi giornalieri contengono sempre conteggi e collegamenti protetti, anche quando la modalità contenuto selezionata è full. I plugin non possono sovrascrivere la modalità privacy del sito.
Tempistica della notifica I nuovi siti hanno come impostazione predefinita alert_only, batched, dieci minuti, un riepilogo daily abilitato alle 09:00. Le migrazioni di aggiornamento preservano il comportamento completo/immediato esistente con i riepiloghi disabilitati. La posta di contatto in batch invia immediatamente il primo avviso, quindi combina i messaggi successivi per sito/canale/destinatario. La chat dal vivo raggruppa in batch per conversazione in modo che ogni conversazione riceva immediatamente il primo avviso offline. daily invia un riepilogo combinato per sito/destinatario/giorno; con daily_summary abilitato, il lavoro in sospeso esistente viene ricordato a daily. I messaggi di contatto letti rimangono in attesa di risposta fino alla risposta/archiviazione; sono esclusi i messaggi spam/messi in quarantena/archiviati e disattivati.
Consegna ed estensione del plug-in webblocks:notifications:dispatch is registered every minute with the Laravel scheduler; gli host devono eseguirlo e utilizzare una cache condivisa che supporta i blocchi atomici quando eseguono più nodi di lavoro. La registrazione memorizza solo gli identificatori e lo stato del sito/canale/origine, con chiavi di origine univoche; la polizza viene riletta prima della consegna. Gli errori sono generici e non vengono mai ripetuti automaticamente. I tentativi interrotti diventano falliti dopo 15 minuti. Gli eventi del terminale e lo stato di inattività dell'invio vengono eliminati dopo 30 giorni. GET espone i risultati dei messaggi con ambito sito e gli ultimi risultati del riepilogo giornaliero; il pannello Impostazioni sito e le caselle di posta esistenti mostrano lo stato di consegna. I plugin abilitati registrano un adattatore SiteNotificationChannel tramite SiteNotificationChannels con il relativo handle di plugin, che possiede origini con ambito sito, destinatari, idoneità, posta dettagliata e conteggi in sospeso; i plugin disabilitati non vengono inviati.
Notifiche del pannello Da CMS 1.96.0, l’intestazione amministrativa condivisa collega al pannello notifiche del Dashboard tramite l’azione WebBlocks UI wb-btn wb-btn-ghost wb-btn-icon e il contatore wb-btn-badge. Le cifre visibili sono limitate a 99+; l’etichetta accessibile mantiene il numero esatto. I responsabili delle operazioni vedono i totali dei messaggi non letti (new) e in attesa di risposta (new + read) dei siti accessibili e un avviso di pianificazione se un sito accessibile richiede email pianificate e lo stato registrato è non verificato, in ritardo, fallito o non disponibile. Da CMS 1.97.0 il badge dell’intestazione conta solo i messaggi non letti; i messaggi letti in attesa di risposta e gli avvisi di scheduler/schema restano stati separati del Dashboard e non contribuiscono al badge. Con zero messaggi non letti, la campana resta visibile senza cifra. La cella Actions della riga del sito usa l’icona standard di visualizzazione WebBlocks UI con suggerimento tradotto ed etichetta accessibile che spiega l’apertura dei messaggi in attesa di risposta. Il lavoro salvato è visibile indipendentemente da consenso all’email, destinatari, esito di consegna o prove dello scheduler. Nel riepilogo non compaiono nomi, indirizzi, oggetti, contenuti o IP dei visitatori. Le letture non inviano email, consumano eventi, segnano messaggi come letti o stabiliscono lo stato dello scheduler. I conteggi si aggiornano a ogni caricamento di pagina del pannello; è lo stato corrente della casella condivisa, non una cronologia personale né un polling automatico. I link usano GET /webadmin/contact-messages?site={id}; il selettore del sito viene validato e conservato negli URL sicuri di ritorno alla casella. Messaggi con risposta, archiviati, spam e in quarantena sono esclusi; lo schema mancante mostra un avviso di migrazione invece di una casella vuota. Live Chat mantiene il proprio indicatore separato del pannello plugin, limitato per permessi e sito, che funziona anche senza email pianificate.
Integrità e prerequisiti dello scheduler CMS 1.95.1 registra nel database del CMS un callback realmente pianificato ogni minuto separatamente da avvii/completamenti/errori del comando notifiche. Il valore required derivato dalla politica del sito è true per consegna raggruppata/giornaliera o riepiloghi giornalieri. Da CMS 1.95.2 il Dashboard presenta un unico avviso di salute con link a tutti i siti accessibili ai responsabili delle operazioni, inclusi quelli precedenti con sola consegna immediata. La gravità dipende dal fatto che un sito accessibile richieda notifiche pianificate; i siti inaccessibili non influiscono. Le politiche immediate senza riepiloghi giornalieri mantengono una scheda informativa che spiega che la pianificazione è opzionale per queste notifiche; impostazioni e API GET delle notifiche del sito mostrano scheduler_health con stato generale/scheduler/processo e timestamp UTC. Le prove mancanti restano unverified; quelle più vecchie di 300 secondi sono delayed; errori di elaborazione e schema non disponibile sono espliciti; un’esecuzione corrente incompleta può essere running. Invio manuale e letture dello stato non creano un heartbeat dello scheduler. Il comando di sola lettura webblocks:scheduler:status --json termina con successo solo con stato sano verificato. L’esecuzione dello scheduler non garantisce consegna SMTP/in casella o salute di ogni nodo. Installatore e avviso di configurazione ospite spiegano email funzionante, APP_URL canonico, scheduler gestito dal server ogni minuto e cache condivisa con blocchi atomici per più processi; il CMS non installa cron. I plugin di notifiche abilitati possono usare lo stesso servizio SchedulerHealth nelle impostazioni e nei controlli di salute.
Bambini/media Nessuno.
HTML Wrapper generico attorno a section.wb-card nativo, modulo protetto da CSRF, campo anti-spam generato dal renderer, input WebBlocks, area di testo, casella di controllo del consenso opzionale, errori di convalida e pulsante di invio.
Aspetto di esempio Modulo di contatto completamente gestito archiviato in Messaggi di contatto con notifica facoltativa.
Evitare Forma grezza HTML, campi honeypot personalizzati o sostituzione mailto:.

rating — Valutazione

Area contrattuale Comportamento supportato dall'origine
Contenuto modificabile Titolo e testo di supporto opzionali per lingua (title, subtitle) usano le traduzioni di testo. Il precedente settings.title resta un fallback di rendering; le etichette normali sono tradotte dal prodotto.
Impostazioni e varianti scale: fixed 5; allow_change: boolean; show_summary: boolean; data_scope (CMS 1.97.0): block (predefinito, mantiene aree di feedback separate) oppure page (stesso sito/pagina salvato, sopravvive alla sostituzione del blocco). Editor e PATCH del blocco supportano l’ambito.
Bambini/media Utilizza content_ratings; niente bambini.
HTML <section class="wb-card"> con proprietario root con H3 opzionale, .wb-rating-stars parzialmente compilato, riepilogo e pulsanti di invio senza JS .wb-rating-input.
Aspetto di esempio Valutazione pagina a cinque stelle con media e conteggio delle risposte.
Nota Solo i voti attivi a 5 punti entrano nel riepilogo pubblico. L’ambito di pagina mantiene stabile l’hash della sessione dopo la sostituzione del blocco, serializza le scritture con un blocco di pagina e riconosce gli hash di blocco superstiti della sessione corrente. Gli hash precedenti orfani non possono essere associati o deduplicati automaticamente; le righe esistenti restano invariate finché non viene aggiornato un voto riconosciuto. Il modulo segna il voto corrente con aria-pressed e disabilita input ripetuti quando allow_change è false; lo impone anche il server. GET non crea un ID visitatore.

comments — Commenti

Area contrattuale Comportamento supportato dall'origine
Contenuto modificabile Nessuna copia del visitatore creata in blocco; le traduzioni dei prodotti forniscono etichette e messaggi.
Impostazioni e varianti form_enabled, show_approved, show_author_name; sort_order: newest or oldest; data_scope (CMS 1.97.0): block (predefinito) oppure page. L’ambito di pagina include i record approvati dello stesso sito/pagina salvato, anche se il blocco originale è stato eliminato; pagine e siti vicini restano esclusi.
Bambini/media Utilizza comment_entries moderato; niente bambini.
HTML Radice propria <section class="wb-card wb-public-comments"> con aree Comments/elenco e Leave a comment/modulo etichettate separatamente (CMS 1.97.1), titoli tradotti dal prodotto e badge del numero approvato. Autore/data condividono una riga di metadati che va a capo; il testo multilinea con escape usa spaziatura compatta. Il modulo ha una superficie tenue adattata al tema, un’area di testo di tre righe e un campo nome compatto che si espande sui telefoni. Mantiene paginazione da 25 elementi (comments_page_{block_id} preservando frammento e query), protezione CSRF nativa, campi antispam, stato di validazione mirato e invio. Visibilità di elenco e modulo restano indipendenti.
Aspetto di esempio Commenti moderati sotto un articolo o una guida al prodotto.
Evitare Memorizzazione dei commenti personalizzati o markup del modulo non elaborato.

Blocco avanzato per soli umani

html — HTML (attendibile)

Area contrattuale Comportamento basato sulla fonte e politica di destinazione
Scopo Revisione della botola di fuga umana per markup attendibile che non ha ancora un contratto di prodotto strutturato.
Contenuti modificabili dall'amministratore Contenuti HTML attendibili. L'attuale registro delle traduzioni lo tratta come contenuto della famiglia testuale.
Impostazioni e varianti Nessuno. I frammenti overlay/body-end riconosciuti possono essere estratti nei registri dei pacchetti.
Bambini/media Niente bambini.
HTML Wrapper generico più un semplice <div> interno contenente markup attendibile; i frammenti estratti potrebbero essere visualizzati all'esterno della radice visibile.
Creazione API Vietato. Non è consentita la creazione, l'aggiornamento, la sostituzione, la mutazione della topologia, la mutazione distruttiva, la mutazione a fasi o la mutazione di pubblicazione.
Comportamento dell'IA Segnala una lacuna di capacità e proponi un blocco/variante/renderer strutturato. Non generare mai un payload HTML scrivibile.

Handle legacy e solo renderer

Non considerare un Blade partial come prova della disponibilità di un handle per il nuovo contenuto API. L'origine corrente contiene renderer di compatibilità e bozze di righe che non sono contratti di creazione principali pubblicati.

Le righe del catalogo bozza includono:

text
card-grid
tabs
menu
faq-list
showcase-list
contact-info

Gli handle solo renderer, alias, parziali o di compatibilità includono esempi come:

accordion
faq
button
callout
list
map
metric-card
stats
testimonial
gallery-viewer
sidebar-nav-item-link
sidebar-navigation-menu-item
fallback
missing-renderer

Regole:

  • Non crearli mai semplicemente perché esiste un file renderer.
  • Utilizzarli solo se il catalogo dei blocchi autenticati in tempo reale riporta l'handle esatto come pubblicato e utilizzabile per l'installazione corrente.
  • Preferisci i blocchi strutturati canonici documentati sopra.
  • I partial interni come il visualizzatore di gallerie e i renderer dei collegamenti della barra laterale non sono mai tipi di blocco del piano di contenuto.

Ricette di composizione visiva

Questi sono alberi di blocchi gestiti, non modelli fissi. Conferma tutti gli handle in fase di esecuzione.

Inizia dalla ricetta meno incorniciata che soddisfa il contenuto. Non ripetere la stessa ricetta in fasce di pagine adiacenti e non selezionare la ricetta della scheda caratteristica semplicemente perché la fonte contiene tre brevi elementi.

Introduzione editoriale con media in primo piano

section(spacing:lg)
└── container(width:xl)
    └── hero(layout:split, foreground media)
        ├── button_link(primary)
        └── button_link(secondary)

Utilizza un'immagine ampia e significativa e uno stile di superficie sobrio. Scegli layout:full-bleed quando l'immagine deve diventare una fascia di apertura senza cornice a livello di viewport; conserva split quando l'immagine è un contenuto semantico in primo piano.

Principi o vantaggi senza cornice

section(spacing:lg)
└── container(width:xl)
    └── columns(variant:plain)
        ├── column_item
        ├── column_item
        └── column_item

Questo è il normale punto di partenza per qualità come esperienza, comunicazione, cura, velocità o affidabilità. Promuovilo su Carte solo quando gli oggetti sono utilizzabili o delimitati in modo indipendente.

Introduzione alla pagina di marketing con azioni separate

section(background optional)
└── container(width:lg)
    ├── hero(variant:accent, layout:centered)
    └── cluster(alignment:center, gap:sm)
        ├── button_link(primary)
        └── button_link(secondary)

Utilizzare questo solo quando la riga dell'azione deve trovarsi all'esterno della radice della promozione dell'Eroe. Hero stesso accetta i figli Button Link in ogni layout, inclusa la suddivisione; mantieni le azioni all'interno di Hero quando questa è la composizione prevista.

Griglia della scheda entità delimitata

section(spacing:lg)
└── container(width:lg)
    ├── header(h2)
    └── grid(columns:3, gap:4)
        ├── card
        │   └── card_body
        │       ├── header(h3)
        │       ├── plain_text
        │       └── button_link
        ├── card
        └── card

Ogni titolo, paragrafo e azione rimane modificabile in modo indipendente. Prenota questa ricetta per entità limitate come prodotti, plug-in, piani, download o servizi con le proprie azioni. Utilizzare il sito CSS per una skin della scheda coerente e specifica per il sito tramite ganci stabili; non iniettare la carta HTML.

Immagine alternata e righe di copia

section
└── container
    ├── grid(columns:2, alternate_media_text_sections:true, alternate_start:media_left)
    │   ├── image
    │   └── card or content stack
    └── grid(columns:2, alternate_media_text_sections:true)
        ├── image
        └── card or content stack

Utilizza immagine per i contenuti multimediali in primo piano. Utilizza un blocco con supporto dello sfondo solo quando l'immagine è semanticamente uno sfondo.

Barra di navigazione reattiva condivisa

sticky-navbar(sticky)
└── container(width:lg)
    └── cluster(alignment:between, width:full)
        ├── navbar-brand
        └── cluster
            ├── navbar-navigation
            └── header-actions

Le etichette di navigazione e gli URL appartengono ai record di navigazione CMS, non a HTML.

Dispositivo di scorrimento delle immagini gestito

slider(height:viewport, autoplay:false, show_arrows:true, show_dots:true)
├── slide(background media)
│   └── container
│       ├── header
│       ├── plain_text
│       └── button_link
└── slide(background media)
    └── container
        └── card
            └── card_body
                └── rich-text

Flusso di lavoro dalla progettazione al CMS

Prima di applicare un design visivo, produrre una tabella di mappatura:

Regione di progettazione Proprietario del contenuto Blocco albero Variante/impostazioni Ganci stabili CSS Stato di capacità
Esempio eroe Traduzioni di pagine e libreria multimediale Sezione → Contenitore → Eroe accento, centrato, supporto di sfondo [data-wb-public-block-type="hero"], .wb-promo Supportato solo se la promozione del supporto in background corrisponde al design

Per ogni regione:

  1. Identifica ogni parte modificabile di testo, contenuto multimediale, azione, badge, dati di navigazione e record dinamico.
  2. Mappa ogni pezzo su un campo nativo modificabile dall'amministratore.
  3. Conferma le regole padre/figlio e il renderer HTML.
  4. Conferma che la composizione visiva è possibile con il DOM documentato.
  5. Utilizza il sito CSS solo per la presentazione che il DOM stabile può supportare.
  6. Se manca un campo semantico, wrapper, slot o variante, contrassegna la regione come non supportata.
  7. Proporre la più piccola funzionalità CMS o plug-in riutilizzabile: una variante del renderer, un nuovo blocco strutturato, un modello composto da blocchi esistenti o un blocco di dominio come una raccolta di prodotti Commerce.
  8. Non applicare un sostituto consapevolmente a bassa fedeltà a meno che l'utente non approvi esplicitamente tale compromesso.

Formato del rapporto sul gap di capacità:

Region: Storefront hero
Required editable content: title, body, two actions, foreground product image, offer badge, trust items
Current closest block: hero
Supported: title, eyebrow, body, background image, promo tone
Missing: foreground media slot, split DOM, trust-item collection, discoverable managed action child
Why CSS is insufficient: required semantic wrappers and editable fields do not exist
Recommended product change: add a reusable split/storefront Hero variant and structured trust-item children
HTML fallback: prohibited

CSS Guida

Utilizza i livelli di stile in questo ordine:

  1. Primitive WebBlocks UI già emesse dal renderer.
  2. Token del tema pubblico e ruoli di colore pubblico sensibili alla modalità.
  3. Impostazioni e varianti del blocco nativo.
  4. CSS stretto specifico per il sito utilizzando ganci stabili.
  5. Un renderer riutilizzabile o una modifica del contratto di blocco quando manca il DOM richiesto.

I selettori stabili includono:

body[data-wb-public-theme] {}
[data-wb-public-block-type="hero"] {}
[data-wb-public-block-type="card"] {}
.wb-promo {}
.wb-card {}
.wb-content-header {}

Non utilizzare il sito da CSS a:

  • inserisci testo essenziale con pseudo-elementi;
  • dipende dagli ID blocco generati;
  • inferisce la semantica dall'ordine dei fratelli;
  • nascondi il contenuto creato dal CMS semplicemente per sostituirlo con il contenuto CSS;
  • ricostruire un layout mancante con posizionamento assoluto fragile;
  • hardcode colori solo chiari che interrompono la modalità Chiaro/Scuro/Auto.

Lacune di origine note nello scenario di riferimento della revisione

Questi sono risultati dell'implementazione, non autorizzazioni per inventare comportamenti:

  1. Risolto: questo inventario ora viene spedito comeresources/contracts/inventory.mded è servito agli strumenti daGET /webadmin/api/inventory.
  2. webblocks-cms-docs/docs/block-type-contracts.mddice 42 tipi principali pubblicati, mentre il catalogo attuale ne definisce 51.
  3. Diversi documenti esistenti mostrano ancora i percorsi del renderer solo pre-pacchetto sottopackages/webblocks-cms/...; i percorsi attuali dei pacchetti iniziano daresources/views/....
  4. Risolto: HTML attendibile non è più scrivibile tramite API.BlockTypeApiAuthoringPolicyblocca ogni percorso di mutazione dell'API, inclusa la normalizzazione generica, il PATCH del blocco esistente e le operazioni di riordino, eliminazione della sottostruttura, cancellazione di tutto e pubblicazione Shared Slot.
  5. Risolto: Hero e CTA sono semplici contenitori perbutton_linkfigli sia nell'amministratore che nell'API. ILprimary_cta/secondary_ctai campi sopravvivono come una scorciatoia a due pulsanti. L'eredità ineditabuttonla riga del catalogo non è più un blocco della creazione.
  6. Risolto: l'editor degli elementi di colonna ora espone il campo dei sottotitoli in Columnsstatsla variante viene visualizzata come valore statistico.
  7. L'audio dispone di un normale selettore multimediale di amministrazione e di un renderer multimediale pubblico, ma la lista consentita dei media diretti del piano dei contenuti omette l'audio.
  8. Risolto: la normalizzazione delle icone ha un proprietario.InternalContentApiOperationsdetiene il canonicoPUBLIC_ICON_BLOCK_TYPESlist più i normalizzatori slug/tone condivisi e il piano di contenuto completo delega loro, quindi i piani e gli endpoint di blocco incrementali convalidano le icone in modo identico.
  9. Le impostazioni del blocco API non sono ancora regolate da uno schema di impostazioni leggibili dalla macchina per blocco. Le impostazioni sconosciute possono sopravvivere alla normalizzazione anche quando nessun renderer o campo di amministrazione le utilizza.
  10. Risolto:navigation-autoora ha un contratto documentatoBlockTypeContractRegistryed è rilevabile tramite tipi di blocco e contratto di contenuto.
  11. WebBlocks UI spedisce awb-footer-*anatomia (wb-footer-grid,wb-footer-brand,wb-footer-nav,wb-footer-link,wb-footer-list,wb-footer-item,wb-footer-copy,wb-footer-meta,wb-footer-text,wb-footer-logo) che nessun renderer CMS emette. Un piè di pagina con slot condiviso compone un file genericwb-section/wb-container/wb-grid/wb-stack/wb-clusterinvece, quindi il modello è raggiungibile solo da layout scritti a mano. Cosmetico dal 1.50.0 ha dato.wb-slot-footerla propria superficie; un blocco di composizione del piè di pagina rimane deliberatamente rinviato anziché in sospeso.
  12. Risolto:GET /content-contractderiva il suomedia_librarysezione dalla tabella di routing registrata, quindisupported_operationsEunsupported_operationsnon può derivare da cosaopenapi.jsonpubblica. Caricamento, recupero remoto, eliminazione, sostituzione e spostamento vengono pubblicati come supportati con la funzionalità applicata da ciascun percorso.
  13. Risolto: il consenso ha una metà rivolta al visitatore. L'attivazione/disattivazione del banner Impostazioni di sistema esegue il rendering del modello di consenso sui cookie di WebBlocks UI sulle pagine pubbliche e lo collega a quello esistentePOST /privacy-consent/syncpunto finale econtact_formguadagnatosettings.consent_requiredpiù un tradottoconsent_labelregistrato su ogni invio.
  14. Il repository dispone di screenshot della dashboard e della gestione delle pagine, ma non di una galleria di dispositivi visivi canonici per blocco/per variante. Le descrizioni di "Aspetto di esempio" in questo inventario sono quindi riferimenti dorati derivati ​​dalla fonte e non supportati da screenshot. Fino a quando non esisterà quella galleria, preferisci composizioni neutre documentate ed evita di rivendicare la fedeltà visiva solo dalla prosa.
  15. Risolto per la pianificazione:GET /content-contractora pubblica un contratto di direzione del design leggibile dalla macchina che copre carattere, densità, tipografia, geometria, immagini, angoli, contrasto, ruoli ritmici, politica delle carte e lacune compositive note. Non persiste deliberatamente un record di stile nascosto; Gli strumenti di intelligenza artificiale indicano la direzione nel loro piano/rapporto e la implementano attraverso scelte di blocchi supportati, token tematici e sito stabile CSS.

Revisione dell'inventario e controlli della freschezza

Il prodotto possiede questo contratto di runtime. Il repository della documentazione conserva uno snapshot della versione generata con un'identità di origine distinta; le modifiche iniziano nel contratto del prodotto.

Da CMS 1.94.3, composer test:inventory e composer test:docs convalidano resources/contracts/inventory-review.json rispetto al contratto corrente e alle impronte digitali dell'origine runtime. I file runtime modificati, aggiunti o rimossi e le modifiche alla versione del prodotto richiedono una nuova revisione esplicita. CI e pre-push eseguono lo stesso controllo; la preparazione del rilascio controlla l'albero di lavoro e il generatore di artefatti controlla l'albero Git selezionato.

Dopo aver esaminato i campi supportati, le enumerazioni, i figli, i media, il rendering, il comportamento dell'editor, le autorizzazioni e il ciclo di vita del plug-in, aggiorna questa prosa e registra la revisione con composer inventory:review -- --reviewed --note="review summary". Un contratto invariato dopo un cambio di fonte viene accettato solo con una spiegazione esplicita --no-authoring-impact="reason". I record di revisione non devono mai essere aggiornati automaticamente dall'elemento della configurazione o dagli script di rilascio.

Il record meccanico acquisisce il catalogo principale pubblicato, le regole secondarie, la proprietà root del renderer, la policy di scrittura API e il supporto multimediale mobile da parte degli assistenti del prodotto reali. PHPUnit confronta questo record con gli attuali helper e il controllo del codice sorgente richiede un'intestazione di inventario univoca per ogni blocco principale pubblicato. Le impronte digitali e i confronti meccanici impongono la revisione e la coerenza strutturale; non dimostrano il significato di ogni frase. Le spiegazioni in prosa e senza impatto rimangono responsabilità del collaboratore e del revisore.

tools/inventory-snapshot.php del repository della documentazione rigenera lo snapshot e la relativa provenienza inventory-source.json. I suoi controlli rifiutano le modifiche manuali alle istantanee e confrontano la versione del prodotto, l'impronta digitale di origine, il checksum delle revisioni e il contenuto del documento con il checkout del prodotto selezionato. I controlli isolati della documentazione verificano la provenienza registrata senza richiedere il prodotto in fase di esecuzione. La generazione di snapshot e la pubblicazione del CMS rimangono operazioni separate.

  • webblocks-cms-docs/docs/ai-page-building-guide.md
  • webblocks-cms-docs/docs/internal-content-api.md
  • webblocks-cms-docs/docs/api-discovery.md
  • webblocks-cms-docs/docs/block-type-contracts.md
  • webblocks-cms-docs/docs/public-block-render-markup.md
  • webblocks-cms-docs/docs/block-ui-renderer-contract.md
  • webblocks-cms-docs/docs/public-theme-and-tones.md
  • webblocks-cms-docs/docs/public-assets.md
  • webblocks-cms-docs/docs/media-image-variants.md

Questo inventario dovrebbe essere il primo documento letto da un'intelligenza artificiale per la selezione della funzionalità di progettazione della pagina. I riferimenti dettagliati rimangono utili per i flussi di lavoro degli endpoint, la compatibilità storica e le note complete sul renderer.

Contratto di avvio e ripristino del plugin

L'installazione del catalogo e del ZIP, gli aggiornamenti e l'attivazione del pannello/API convalidano l'origine del plug-in, avvio, comandi e percorsi del provider in un nuovo processo PHP tramite cms:plugin-probe. La convalida è richiesta anche quando non è in sospeso alcuna migrazione. Una sonda non riuscita o scaduta lascia attivo il pacchetto corrente; la diagnostica del sottoprocesso non viene esposta nelle risposte. Il timeout di avvio predefinito è 30 secondi (webblocks-plugins.install.boot_timeout_seconds).

Gli aggiornamenti riusciti mantengono il pacchetto precedente e registrano se le migrazioni sono state eseguite. Gli errori di configurazione del database lasciano il plugin disabilitato e ne preservano le tabelle e i pacchetti. Gli errori di origine/percorso di runtime mettono in quarantena il plug-in; una disabilitazione esplicita ha la priorità abilitazione basata sulla configurazione. I record JSON del ciclo di vita utilizzano la sostituzione atomica.

/webadmin/plugin-recovery e il relativo modulo di accesso vengono caricati senza la sorgente del plug-in installata, percorsi o comandi. Controlli di accesso CMS esistenti, accesso amministratore attivo, autorizzazione Super admin e CSRF si applica la protezione. Il ripristino può disabilitare un plug-in o ripristinare il pacchetto conservato quando non è stata eseguita alcuna migrazione, dopo un'altra verifica di avvio. Un ripristino ripubblica anche le relative risorse. Si tratta del ripristino per i pacchetti gestiti da CMS; non isola i fornitori host arbitrari o eseguibile sandbox PHP. La terminazione del processo non catturabile richiede ancora il file separate richiesta di ripristino anziché un gestore di errori in-process.

Autorizzazione di lettura dello stato del sistema

GET /webadmin/api/system/health richiede la capacità da abilitare esplicitamente system-health.read e un token di sistema valido per l’intera installazione (allowed_site_ids: null), appartenente a un operatore attivo con access-system. Le credenziali personali e limitate ai siti non possono leggere lo stato dell’installazione. Il parametro facoltativo e validato site_id filtra i controlli dei siti mantenendo visibili quelli dell’intera installazione.

L’endpoint restituisce chiavi e parametri di messaggi sicuri, problemi ordinati, stati delle categorie (healthy, warning, critical, unknown, not_applicable), riepiloghi dei siti, informazioni di sistema ed esiti recenti delle operazioni. Le osservazioni su siti, backup, archiviazione, plugin, idoneità all’aggiornamento e cronologia vengono memorizzate nella cache per cinque minuti; le prove dello scheduler vengono lette a ogni richiesta. I controlli sconosciuti e facoltativi restano distinti da quelli riusciti. Leggere o aggiornare lo stato non modifica contenuti, riconcilia record dei backup, invia posta, esegue pulizia o aggiornamenti, recupera metadati delle versioni né genera prove dello scheduler. I componenti di report dei plugin conservano il contratto esistente per i report sullo stato; i messaggi grezzi e i dettagli delle eccezioni sono esclusi da questa vista.

Le rotte operative esistenti restano disponibili. Le destinazioni Aiuto dei plugin si uniscono a Sistema e quelle di Manutenzione vengono aggregate tramite la chiave stabile del gruppo di manutenzione; la voce Aiuto principale rimanda direttamente alla documentazione. Lo stato è una prova da esaminare, non un’autorizzazione a pubblicare contenuti, ripristinare un backup o aggiornare un host. I controlli della ricerca confrontano gli ambiti idonei di pagine pubblicate e lingue con le righe dell’indice; non dimostrano l’aggiornamento del testo. La disponibilità dei backup non dimostra l’integrità del ripristino. L’idoneità all’aggiornamento rimane distinta dal normale funzionamento del sito.