Benutzerdefinierte Attribute zum CIF-Produktkarussell product-carousel
Erfahren Sie, wie Sie die AEM CIF-Produktkarussellkomponente erweitern, indem Sie das Sling-Modell aktualisieren und das Markup anpassen.
Einführung intro
Die Produktkarussellkomponente wird im Laufe dieses Tutorials erweitert. Als ersten Schritt fügen Sie der Startseite eine Instanz des Produktkarussells hinzu, um sich mit den Grundfunktionen vertraut zu machen:
-
Navigieren Sie zur Startseite der Site, z. B. http://localhost:4502/editor.html/content/acme/us/en.html
-
Fügen Sie eine neue Produktkarussellkomponente in den Haupt-Layout-Container auf der Seite ein.
-
Erweitern Sie das seitliche Bedienfeld (falls noch nicht umgeschaltet) und schalten Sie in der Dropdown-Liste der Asset-Suche Produkte.
-
Nun sollte eine Liste mit verfügbaren Produkten einer verbundenen Adobe Commerce-Instanz angezeigt werden.
-
Produkte werden wie folgt mit Standardeigenschaften angezeigt:
Aktualisieren des Sling-Modells update-sling-model
Sie können die Geschäftslogik des Produktkarussells erweitern, indem Sie ein Sling-Modell implementieren:
-
Navigieren Sie in Ihrer IDE unter dem Kernmodul zu
core/src/main/java/com/venia/core/models/commerceund erstellen Sie eine CustomCarousel-Oberfläche, die die CIF ProductCarousel-Oberfläche erweitert:code language-text package com.venia.core.models.commerce; import com.adobe.cq.commerce.core.components.models.productcarousel.ProductCarousel; public interface CustomCarousel extends ProductCarousel { } -
Erstellen Sie als Nächstes eine Implementierungsklasse
CustomCarouselImpl.javauntercore/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.Das Delegationsmuster für Sling-Modelle ermöglicht es
CustomCarouselImpl, durch die Eigenschaftsling:resourceSuperTypeauf das ModellProductCarouselzu verweisen:code language-text @Self @Via(type = ResourceSuperType.class) private ProductCarousel productCarousel; -
Die Anmerkung
@PostConstructstellt sicher, dass diese Methode aufgerufen wird, wenn das Sling-Modell initialisiert wird. Die GraphQL-Produktabfrage wurde bereits mit der Methode „extendProductQueryWith“ erweitert, um Attribute abzurufen. Aktualisieren Sie die GraphQL-Abfrage , um das -Attribut in die partielle Abfrage aufzunehmen:code language-javascript @PostConstruct private void initModel() { productsRetriever = productCarousel.getProductsRetriever(); if(productCarousel.getProductsRetriever() != null) productCarousel.getProductsRetriever().extendProductQueryWith(p -> p .createdAt() .addCustomSimpleField("accessory_gemstone_addon") ); }Im obigen Code wird
addCustomSimpleFieldzum Abrufen des Attributsaccessory_gemstone_addonverwendet.
Anpassen des Markup customize-markup
Gehen Sie wie folgt vor, um das Markup weiter anzupassen:
-
Erstellen Sie eine Kopie von
productcard.htmlaus/apps/core/cif/components/commerce/productcarousel/v1/productcarousel(CRXDE-Pfad der Kernkomponente) im ui.apps-Modului.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html. -
Bearbeiten Sie
productcard.html, um das benutzerdefinierte Attribut aufzurufen, das in der Implementierungsklasse erwähnt wird: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}" .. -
Speichern Sie die Änderungen und stellen Sie die Aktualisierungen in AEM bereit. Verwenden Sie dazu Ihren Maven-Befehl in einem Befehlszeilen-Terminal. Sie können für die ausgewählten Produkte auf der Seite den Wert
accessory_gemstone_addondes benutzerdefinierten Attributs sehen.