Sådan skjuler du Magento 2 "Tilføj til kurv"-knappen efter klik

Indholdsfortegnelse

  1. Introduktion
  2. Generel koncept
  3. Implementerings skridt
  4. Konklusion
  5. FAQ

Introduktion

Har du nogensinde spekuleret over, hvordan du kan optimere brugeroplevelsen på din Magento 2 butik ved at håndtere "Tilføj til kurv"-knappen dynamisk? Hvis du driver en e-handels hjemmeside og ønsker at sikre, at dine kunder har en problemfri shoppingoplevelse, ønsker du måske at skjule "Tilføj til kurv"-knappen, når et produkt er blevet tilføjet til kurven, og i stedet vise muligheder for at ændre antallet eller fjerne produktet. Denne blogpost vil udforske, hvordan du kan opnå dette, så din butik bliver mere intuitiv og brugervenlig for dine kunder.

Denne vejledning vil dække de nødvendige skridt og give et teknisk overblik fokuseret på Magento 2. Ved udgangen af denne artikel vil du forstå, hvordan du effektivt skjuler "Tilføj til kurv"-knappen efter klik og erstatter den med muligheder for at ændre antallet af produktet eller fjerne det fra kurven.

Generelt koncept

Den centrale idé handler om at kontrollere brugerfladen dynamisk baseret på brugerhandlinger. Når en kunde klikker på "Tilføj til kurv"-knappen, skal knappen forsvinde, og muligheder for at øge, formindske eller slette produktet skal vises. Denne type funktionalitet forbedrer brugeroplevelsen ved at gøre shoppingprocessen mere interaktiv og håndterbar.

Implementerings skridt

1. Håndtering af kundedata

Magento 2 bruger kundedata til at administrere information relateret til indkøbskurven. Du kan løse problemet ved at oprette en brugerdefineret require-js modul, der dynamisk kan styre knappens synlighed.

Trin 1: Opret en RequireJS-modul

Først oprettes en RequireJS-modul til at håndtere logikken bag at skjule og vise knapperne baseret på antallet af produkter i kurven. Placer dette modul inden for dit tema eller brugerdefinerede moduldirektorium.

// app/design/frontend/{Vendor}/{theme}/web/js/hide-add-to-cart.js
define([
    'jquery',
    'mage/url',
    'Magento_Customer/js/customer-data'
], function ($, urlBuilder, customerData) {
    'use strict';
    
    return function (config, element) {
        var cart = customerData.get('cart');
        var productId = config.productId;
        
        cart.subscribe(function (cartData) {
            updateButton(cartData);
        });
        
        function updateButton(cartData) {
            var item = cartData.items.find(item => item.product_id === productId);
            
            if (item && item.qty > 0) {
                $(element).hide();
                $('.quantity-controls[data-product-id="' + productId + '"]').show();
            } else {
                $(element).show();
                $('.quantity-controls[data-product-id="' + productId + '"]').hide();
            }
        }

        updateButton(cart());
        
        $('.quantity-controls[data-product-id="' + productId + '"] .btn-remove').on('click', function () {
            // Logic to remove item from cart
        });
        
        $('.quantity-controls[data-product-id="' + productId + '"] .btn-increment').on('click', function () {
            // Logic to increment item quantity
        });
        
        $('.quantity-controls[data-product-id="' + productId + '"] .btn-decrement').on('click', function () {
            // Logic to decrement item quantity
        });
    };
});

Step 2: Integrer RequireJS-modul i produktets skabelon

Tilføj JavaScript-modulet til dine produkt-skabeloner. Opdater produktvisningskabelonen til at inkludere dette script.

<!-- app/design/frontend/{Vendor}/{theme}/Magento_Catalog/templates/product/view/addtocart.phtml -->
<button type="button" class="action tocart" 
        id="product-addtocart-button" title="<?= $block->escapeHtml(__('Add to Cart')) ?>" 
        data-role="tocart" data-product-sku="<?= $block->escapeHtml($block->getProduct()->getSku()) ?>">
    <span><?= /* @escapeNotVerified */ __('Add to Cart') ?></span>
</button>
<div class="quantity-controls" data-product-id="<?= $block->escapeHtml($block->getProduct()->getId()) ?>" style="display: none;">
    <button class="btn-decrement">-</button>
    <input type="text" class="item-qty" value="1">
    <button class="btn-increment">+</button>
    <button class="btn-remove">Fjern</button>
</div>
<script>
    require(['jquery', 'hide-add-to-cart'], function ($, hideAddToCart) {
        $(document).ready(function () {
            hideAddToCart({
                productId: '<?= $block->escapeHtml($block->getProduct()->getId()) ?>'
            }, $('#product-addtocart-button'));
        });
    });
</script>

2. Logik for knappens synlighed

For at sikre, at "Tilføj til kurv"-knappen skjules, og antalskontrollerne vises korrekt, skal du spore kurvændringer ved hjælp af Knockout.js observables.

Trin 1: Opdater layout XML

Indsæt filen hide-add-to-cart.js i layoutet. Tilføj den til default_head_blocks.xml.

<!-- app/design/frontend/{Vendor}/{theme}/Magento_Theme/layout/default_head_blocks.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <script src="js/hide-add-to-cart.js"/>
    </head>
</page>

3. Test og fejlfinding

Når du har implementeret ændringerne:

  1. Ryd cache: Ryd op i din Magento-cache for at sikre, at ændringerne afspejles korrekt.
  2. Test funktionalitet: Verificer, at "Tilføj til kurv"-knappen skjules, når der klikkes på den, og antalskontrollerne vises.
  3. Tvær-browser testning: Test funktionaliteten på forskellige browsere for at sikre kompatibilitet.
  4. Ekstra tilfælde: Overvej tilfælde som flere instanser af det samme produkt, der tilføjes, og sikre, at brugerfladen opfører sig som forventet.

Konklusion

Ved at implementere dynamisk knapfunktionalitet i Magento 2 forbedrer du ikke kun brugerinteraktionen, men også strømliner indkøbsprocessen. Ved at foretage små ændringer i frontend kan du tilbyde kunderne en mere effektiv måde at administrere deres produkter direkte fra produktsiden.

Disse trin sikrer, at din e-handelsplatform skiller sig ud ved at levere en overlegen brugeroplevelse. Ved at tillade kunderne nemt at tilføje, ændre og fjerne produkter i realtid kan du markant øge kundetilfredsheden og potentielt føre til højere konverteringsrater.

FAQ

Hvordan rydder jeg Magento-cache?

Du kan rydde Magento-cache via adminpanelet. Gå til System > Cachehåndtering og klik på "Ryd Magento-cache".

Er denne metode kompatibel med brugerdefinerede temaer?

Ja, denne metode er fleksibel og kan tilpasses brugerdefinerede temaer. Sørg for at placere RequireJS-modulet og opdatere skabelonerne i overensstemmelse hermed.

Kan jeg tilpasse designet for antalskontrollerne?

Absolut. HTML og CSS for antalskontrollerne kan styles, så de passer til dit butiks tema.

Ved at følge denne vejledning vil din Magento 2 butik ikke kun blive mere brugervenlig, men du vil også være bedre rustet til at håndtere skræddersyede frontend-krav, der er tilpasset din forretnings behov.