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:

  1. Navigieren Sie zur Startseite der Site, z. B. http://localhost:4502/editor.html/content/acme/us/en.html

  2. Fügen Sie eine neue Produktkarussellkomponente in den Haupt-Layout-Container auf der Seite ein.

    Produktkarussellkomponente

  3. Erweitern Sie das seitliche Bedienfeld (falls noch nicht umgeschaltet) und schalten Sie in der Dropdown-Liste der Asset-Suche Produkte.

    Karussellprodukte

  4. Nun sollte eine Liste mit verfügbaren Produkten einer verbundenen Adobe Commerce-Instanz angezeigt werden.

    Verbundene Instanz

  5. Produkte werden wie folgt mit Standardeigenschaften angezeigt:

    Angezeigtes Produkt mit Eigenschaften

Aktualisieren des Sling-Modells update-sling-model

Sie können die Geschäftslogik des Produktkarussells erweitern, indem Sie ein Sling-Modell implementieren:

  1. Navigieren Sie in Ihrer IDE unter dem Kernmodul zu core/src/main/java/com/venia/core/models/commerce und 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 {
    }
    
  2. Erstellen Sie als Nächstes eine Implementierungsklasse CustomCarouselImpl.java unter core/src/main/java/com/venia/core/models/commerce/CustomCarouselImpl.java.

    Das Delegationsmuster für Sling-Modelle ermöglicht es CustomCarouselImpl, durch die Eigenschaft sling:resourceSuperType auf das Modell ProductCarousel zu verweisen:

    code language-text
    @Self
    @Via(type = ResourceSuperType.class)
    private ProductCarousel productCarousel;
    
  3. Die Anmerkung @PostConstruct stellt 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 addCustomSimpleField zum Abrufen des Attributs accessory_gemstone_addon verwendet.

Anpassen des Markup customize-markup

Gehen Sie wie folgt vor, um das Markup weiter anzupassen:

  1. Erstellen Sie eine Kopie von productcard.html aus /apps/core/cif/components/commerce/productcarousel/v1/productcarousel (CRXDE-Pfad der Kernkomponente) im ui.apps-Modul ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productcarousel/productcard.html.

  2. 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}"
    ..
    
  3. 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_addon des benutzerdefinierten Attributs sehen.

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab