Attributi personalizzati per il carosello dei prodotti CIF product-carousel
Scopri come estendere il componente Carosello prodotto AEM CIF aggiornando il modello Sling e personalizzando il markup.
Introduzione intro
Il componente Carosello prodotto viene esteso durante questa esercitazione. Come primo passo, aggiungi un’istanza del Carosello prodotto alla pagina Home per comprenderne le funzionalità di base:
-
Passa alla home page del sito, ad esempio http://localhost:4502/editor.html/content/acme/us/en.html
-
Inserisci un nuovo componente Carosello prodotto nel contenitore di layout principale della pagina.
-
Espandi il pannello laterale (se non è già attivato) e imposta il menu a discesa di ricerca risorse su Prodotti.
-
Dovrebbe essere visualizzato un elenco dei prodotti disponibili da un’istanza di Adobe Commerce connessa.
-
I prodotti verranno visualizzati come segue con le proprietà predefinite:
Aggiornare il modello Sling update-sling-model
Puoi estendere la logica di business del carosello di prodotti implementando un modello Sling:
-
Nell'IDE, passa al modulo core fino a
core/src/main/java/com/venia/core/models/commercee crea un'interfaccia CustomCarousel che estende l'interfaccia CIF ProductCarousel:code language-text package com.venia.core.models.commerce; import com.adobe.cq.commerce.core.components.models.productcarousel.ProductCarousel; public interface CustomCarousel extends ProductCarousel { } -
Creare quindi una classe di implementazione
CustomCarouselImpl.javaincore/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.Il modello di delega per modelli Sling consente a
CustomCarouselImpldi fare riferimento al modelloProductCarouseltramite la proprietàsling:resourceSuperType:code language-text @Self @Via(type = ResourceSuperType.class) private ProductCarousel productCarousel; -
L'annotazione
@PostConstructassicura che questo metodo venga chiamato quando il modello Sling viene inizializzato. La query GraphQL del prodotto è già stata estesa utilizzando il metodo extendProductQueryWith per recuperare gli attributi. Aggiorna la query GraphQL per includere l’attributo nella query parziale:code language-javascript @PostConstruct private void initModel() { productsRetriever = productCarousel.getProductsRetriever(); if(productCarousel.getProductsRetriever() != null) productCarousel.getProductsRetriever().extendProductQueryWith(p -> p .createdAt() .addCustomSimpleField("accessory_gemstone_addon") ); }Nel codice riportato sopra,
addCustomSimpleFieldviene utilizzato per recuperare l'attributoaccessory_gemstone_addon.
Personalizzazione del markup customize-markup
Per personalizzare ulteriormente il markup:
-
Crea una copia di
productcard.htmlda/apps/core/cif/components/commerce/productcarousel/v1/productcarousel(percorso crxde del componente core) al modulo ui.appsui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html. -
Modificare
productcard.htmlper chiamare l'attributo personalizzato, indicato nella classe di implementazione: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}" .. -
Salva le modifiche e distribuisci gli aggiornamenti in AEM utilizzando il comando Maven, da un terminale della riga di comando. Nella pagina verrà visualizzato il valore dell'attributo personalizzato
accessory_gemstone_addonper i prodotti selezionati.