Anpassade attribut till CIF Product Carousel product-carousel
Lär dig hur du utökar AEM CIF Product Carousel-komponenten genom att uppdatera Sling Model och anpassa koden.
Introduktion intro
Produktkarusellkomponenten utökas genom hela kursen. Som ett första steg lägger du till en instans av Product Carousel på startsidan för att förstå baslinjefunktionerna:
-
Navigera till webbplatsens hemsida, till exempel http://localhost:4502/editor.html/content/acme/us/en.html
-
Infoga en ny Product Carousel-komponent i huvudlayoutbehållaren på sidan.
-
Expandera sidopanelen (om den inte redan är aktiverad) och växla till listrutan Produkter för att hitta resurser.
-
Här visas en lista över tillgängliga produkter från en ansluten Adobe Commerce-instans.
-
Produkter visas enligt nedan med standardegenskaper:
Uppdatera försäljningsmodellen update-sling-model
Du kan utöka affärslogiken i Product Carousel genom att implementera en Sling-modell:
-
I din IDE navigerar du under kärnmodulen till
core/src/main/java/com/venia/core/models/commerceoch skapar ett CustomCarousel-gränssnitt som utökar CIF ProductCarousel-gränssnittet:code language-text package com.venia.core.models.commerce; import com.adobe.cq.commerce.core.components.models.productcarousel.ProductCarousel; public interface CustomCarousel extends ProductCarousel { } -
Skapa sedan en implementeringsklass
CustomCarouselImpl.javavidcore/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.Delegeringsmönstret för delningsmodeller gör att
CustomCarouselImplkan referera tillProductCarousel-modellen via egenskapensling:resourceSuperType:code language-text @Self @Via(type = ResourceSuperType.class) private ProductCarousel productCarousel; -
Anteckningen
@PostConstructser till att den här metoden anropas när Sling-modellen initieras. Produktens GraphQL-fråga har redan utökats med metoden extendProductQueryWith för att hämta attribut. Uppdatera GraphQL-frågan så att attributet inkluderas i den partiella frågan:code language-javascript @PostConstruct private void initModel() { productsRetriever = productCarousel.getProductsRetriever(); if(productCarousel.getProductsRetriever() != null) productCarousel.getProductsRetriever().extendProductQueryWith(p -> p .createdAt() .addCustomSimpleField("accessory_gemstone_addon") ); }I ovanstående kod används
addCustomSimpleFieldför att hämta attributetaccessory_gemstone_addon.
Anpassa markeringen customize-markup
Så här anpassar du markeringen ytterligare:
-
Skapa en kopia av
productcard.htmlfrån/apps/core/cif/components/commerce/productcarousel/v1/productcarousel(huvudkomponentens sökväg) till modulen ui.appsui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html. -
Redigera
productcard.htmlför att anropa det anpassade attributet, som nämns i implementeringsklassen:code language-xml .. <div data-product-sku="${product.commerceIdentifier.value}" data-product-base-sku="${product.combinedSku.baseSku}" id="${product.id}" data-cmp-data-layer="${product.data.json}" class="card product__card"> <span>${product.product.responseData['accessory_gemstone_addon']}</span> <a href="${product.URL}" target="${productCarousel.linkTarget}" .. -
Spara ändringarna och distribuera uppdateringarna till AEM med ditt Maven-kommando från en kommandoradsterminal. Du kan se det anpassade attributvärdet
accessory_gemstone_addonför de valda produkterna på sidan.