Atributos personalizados para crear un carrusel de productos de CIF product-carousel
Obtenga información sobre cómo ampliar el componente Carrusel de productos de AEM CIF actualizando el modelo Sling y personalizando el marcado.
Introducción intro
El componente Carrusel de productos se amplía a través de este tutorial. Como primer paso, añada una instancia del carrusel de productos a la página de inicio para comprender la funcionalidad de línea de base:
-
Vaya a la página principal del sitio, por ejemplo http://localhost:4502/editor.html/content/acme/us/en.html
-
Inserte un nuevo componente Carrusel de productos en el contenedor de diseño principal de la página.
-
Expanda el panel lateral (si no está activado) y cambie la lista desplegable del buscador de recursos a Productos.
-
Esto debería mostrar una lista de los productos disponibles de una instancia de Adobe Commerce conectada.
-
Los productos se mostrarán como se muestra a continuación con las propiedades predeterminadas:
Actualización del modelo de Sling update-sling-model
Puede ampliar la lógica empresarial del carrusel de productos implementando un modelo Sling:
-
En su IDE, vaya al módulo principal a
core/src/main/java/com/venia/core/models/commercey cree una interfaz CustomCarousel que extienda la interfaz ProductCarousel de CIF:code language-text package com.venia.core.models.commerce; import com.adobe.cq.commerce.core.components.models.productcarousel.ProductCarousel; public interface CustomCarousel extends ProductCarousel { } -
A continuación, cree una clase de implementación
CustomCarouselImpl.javaencore/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.El patrón de delegación para modelos Sling permite que
CustomCarouselImplhaga referencia al modeloProductCarousela través de la propiedadsling:resourceSuperType:code language-text @Self @Via(type = ResourceSuperType.class) private ProductCarousel productCarousel; -
La anotación
@PostConstructgarantiza que se llame a este método cuando se inicialice el modelo Sling. La consulta de GraphQL del producto ya se ha ampliado utilizando el método extendProductQueryWith para recuperar atributos. Actualice la consulta de GraphQL para incluir el atributo en la consulta parcial:code language-javascript @PostConstruct private void initModel() { productsRetriever = productCarousel.getProductsRetriever(); if(productCarousel.getProductsRetriever() != null) productCarousel.getProductsRetriever().extendProductQueryWith(p -> p .createdAt() .addCustomSimpleField("accessory_gemstone_addon") ); }En el código anterior,
addCustomSimpleFieldse usa para recuperar el atributoaccessory_gemstone_addon.
Personalización del marcado customize-markup
Para personalizar aún más el marcado:
-
Cree una copia de
productcard.htmldesde/apps/core/cif/components/commerce/productcarousel/v1/productcarousel(la ruta crxde del componente principal) al módulo ui.appsui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html. -
Edite
productcard.htmlpara llamar al atributo personalizado, que se menciona en la clase de implementación: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}" .. -
Guarde los cambios e implemente las actualizaciones en AEM con el comando Maven desde un terminal de línea de comandos. Podrá ver el valor del atributo personalizado
accessory_gemstone_addonpara los productos seleccionados en la página.