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:

  1. Ta bort flervärdesbehållarfältet från den befintliga komponentmodellen för att stoppa dubbletter eller tom kodgenerering.

  2. Behåll enkla fält, t.ex. övertext och undertext, i den överordnade behållarblockmodellen för att behålla innehåll på layoutnivå.

  3. 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"]
            }
          ]
        }
    
  4. 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 med id: "multifield-container-component" begränsar behållaren så att den bara accepterar flerfälts-container-item.

  5. Uppdatera överordnade komponenter genom att ersätta flerfältsbaserade kapslade behållare med underordnade blockplatser som accepterar objektblock.

  6. Lägg till blockskript för både behållar- och artikelblock om projektkonfigurationen kräver det.

  7. Bygg och driftsätt de uppdaterade modellerna och komponenterna via standardflödet.

  8. Återskapa innehåll i Universal Editor genom att lägga till ett objektblock för varje obligatorisk post i behållarblocket.

  9. 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 bild
    • itemImageAlt (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: true anges till multi: false fö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.

Relaterad läsning

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f