Behållare för flera fält genererar tomma HTML eller dubblettblock i Universellt redigeringsprogram
En flerfältbehållare i Universell redigerare för Edge Delivery (xwalk/xcom) återger tomma HTML-element eller duplicerar blockkod när den konfigureras med ett flervärdesbehållarfält. Du löser problemet genom att migrera till ett behållar- och objektblocksmönster.
Beskrivning description
Miljö
- Produkt: Adobe Experience Manager as a Cloud Service (AEMaaCS) - Webbplatser
- Scenario: Edge Delivery (xwalk/xcom) med Universal Editor
Problem/symtom
- Behållarskapade objekt kan inte generera förväntade HTML-utdata, vilket resulterar i tomma
<div>-element. - Om du lägger till flera fält i komponenten multifield återges det duplicerade blocket HTML för en enda behållarinstans.
- När du uppdaterar redigeringsvyn tas dubblettblock bort tillfälligt, men dubbletter visas igen efter efterföljande redigeringar.
Upplösning resolution
Följ stegen nedan för att åtgärda problemet:
-
Ta bort flervärdesbehållarfältet från den befintliga komponentmodellen för att stoppa dubbletter eller tom kodgenerering.
-
Behåll enkla fält, t.ex. övertext och undertext, i den överordnade behållarblockmodellen för att behålla innehåll på layoutnivå.
-
Skapa en dedikerad objektblockmodell och definiera enskilda fält för varje objekt, till exempel text- eller bildfält. Exempel på objektblock och behållarmodellstruktur:
code language-none { "definitions": [ { "title": "Multifield Container", "id": "multifield-container-component", "plugins": { "xwalk": { "page": { "resourceType": "core/franklin/components/block/v1/block", "template": { "name": "multifield-container-component", "model": "multifield-container-component", "filter": "multifield-container-component" } } } } }, { "title": "Multifield Container Item", "id": "multifield-container-item", "plugins": { "xwalk": { "page": { "resourceType": "core/franklin/components/block/v1/block", "template": { "name": "multifield-container-item", "model": "multifield-container-item" } } } } } ] , "models": [ { "id": "multifield-container-component", "fields": [ { "component": "text", "name": "topText", "label": "Top of container", "valueType": "string" }, { "component": "text", "name": "bottomText", "label": "Bottom of container", "valueType": "string" } ] }, { "id": "multifield-container-item", "fields": [ { "component": "text", "name": "itemText", "label": "Item text", "valueType": "string" }, { "component": "reference", "name": "itemImage", "label": "Item image", "valueType": "string", "multi": false }, { "component": "text", "name": "itemImageAlt", "label": "Item image alt text", "valueType": "string" } ] } ] , "filters": [ { "id": "multifield-container-component", "components": [ "multifield-container-item"] } ] } -
Konfigurera filter i Universal Editor för att tillåta objektblock under det överordnade behållarblocket. I det här exemplet ser filtret till att behållaren endast accepterar objektblock:
code language-none { "id": "multifield-container-component", "components": [ "multifield-container-item"] }Behållardefinitionen måste referera till det här filtret:
"filter": "multifield-container-component", och filtret medid: "multifield-container-component"begränsar behållaren så att den bara accepterar flerfälts-container-item. -
Uppdatera överordnade komponenter genom att ersätta flerfältsbaserade kapslade behållare med underordnade blockplatser som accepterar objektblock.
-
Lägg till blockskript för både behållar- och artikelblock om projektkonfigurationen kräver det.
-
Bygg och driftsätt de uppdaterade modellerna och komponenterna via standardflödet.
-
Återskapa innehåll i Universal Editor genom att lägga till ett objektblock för varje obligatorisk post i behållarblocket.
-
Validera utdata för att bekräfta att varje block återges en gång och genererar ren, icke-duplicerad HTML.
Modellbeteende - objektblockmodell (multifield-container-item)
-
Varje skapad post skapar en blockinstans med:
itemText (text)itemImage (reference)- matchar vanligtvis en bild när den refererade DAM-resursen är en bilditemImageAlt (text)- används för bildalternativtext
Anteckningar:
- Universal Editor hanterar det flervärdiga behållarfältmönstret (
component: "container",multi: true) som tidig åtkomst, vilket leder till instabil återgivning och blockduplicering i Edge Delivery-miljöer. - Om
multi: trueanges tillmulti: falseförhindras duplicering, men redigeringen begränsas till en enda behållarpost. - Om du använder ett behållarblock med objektblock justeras de efter de universella redigeringsmodeller som stöds och säkerställer konsekvent, stabil HTML-återgivning.