Atributos personalizados para o Carrossel de produtos do CIF product-carousel
Saiba como estender o componente Carrossel de produtos do AEM CIF atualizando o Modelo do Sling e personalizando a marcação.
Introdução intro
O componente Carrossel de produtos é estendido por todo este tutorial. Como primeira etapa, adicione uma instância do Carrossel do produto à página inicial para entender a funcionalidade da linha de base:
-
Navegue até a Página Inicial do site, por exemplo http://localhost:4502/editor.html/content/acme/us/en.html
-
Insira um novo componente Carrossel do produto no container do layout principal da página.
-
Expanda o painel lateral (se ainda não estiver sendo exibido) e na lista suspensa do localizador de ativos selecione Produtos.
-
Isso deve exibir uma lista de produtos disponíveis em uma instância conectada do Adobe Commerce.
-
Os produtos serão exibidos abaixo com as propriedades padrão:
Atualizar o modelo do Sling update-sling-model
É possível estender a lógica de negócios do Carrossel de produtos implementando um Modelo do Sling:
-
No IDE, navegue no módulo principal até
core/src/main/java/com/venia/core/models/commercee crie uma interface CustomCarousel que estenda a interface ProductCarousel do 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 { } -
Em seguida, crie uma classe de implementação
CustomCarouselImpl.javaemcore/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.O padrão de delegação para Modelos do Sling permite que
CustomCarouselImplfaça referência ao modeloProductCarouselpor meio da propriedadesling:resourceSuperType:code language-text @Self @Via(type = ResourceSuperType.class) private ProductCarousel productCarousel; -
A anotação
@PostConstructgarante que esse método seja chamado quando o Modelo Sling for inicializado. A consulta do GraphQL do produto já foi estendida usando o método extendProductQueryWith para recuperar atributos. Atualize a consulta do GraphQL para incluir o atributo na 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") ); }No código acima, o
addCustomSimpleFieldé usado para recuperar o atributoaccessory_gemstone_addon.
Personalização da marcação customize-markup
Para personalizar ainda mais a marcação:
-
Crie uma cópia de
productcard.htmlde/apps/core/cif/components/commerce/productcarousel/v1/productcarousel(o caminho crxde do componente principal) para o módulo ui.appsui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html. -
Edite
productcard.htmlpara chamar o atributo personalizado, que é mencionado na classe de implementação: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}" .. -
Salve as alterações e implante as atualizações no AEM usando o comando Maven, em um terminal de linha de comando. Você poderá ver o valor do atributo personalizado
accessory_gemstone_addonpara os produtos selecionados na página.