Hur man döljer Magento 2 "Lägg till i varukorgen"-knappen efter klick

Innehållsförteckning

  1. Introduktion
  2. Generell koncept
  3. Implementationssteg
  4. Slutsats
  5. Vanliga frågor

Introduktion

Har du någonsin funderat på hur du kan optimera användarupplevelsen på din Magento 2-butik genom att dynamiskt hantera "Lägg till i varukorgen"-knappen? Antag att du driver en e-handelswebbplats och vill se till att dina kunder har en problemfri shoppingupplevelse. Du kanske vill dölja "Lägg till i varukorgen"-knappen när en vara har lagts till i varukorgen och istället visa styrningsalternativ som "ökad kvantitet" eller "ta bort". Det här blogginlägget kommer att ta upp hur du kan uppnå detta och göra din butik mer intuitiv och användarvänlig för dina kunder.

Denna guide kommer att täcka de nödvändiga stegen och ge en teknisk översikt fokuserad på Magento 2. Vid slutet av denna artikel kommer du att förstå hur du effektivt kan dölja "Lägg till i varukorgen"-knappen vid klickning och ersätta den med möjligheter att ändra antal eller ta bort den från varukorgen.

Generell koncept

Den grundläggande idén handlar om att dynamiskt styra användargränssnittet baserat på användaråtgärder. När en kund klickar på "Lägg till i varukorgen"-knappen bör knappen försvinna och alternativ för att öka, minska eller ta bort varan bör visas. Denna typ av funktionalitet förbättrar användarupplevelsen genom att göra shoppingprocessen mer interaktiv och hanterbar.

Implementationssteg

1. Hantering av kunddata

Magento 2 använder kunddata för att hantera information relaterad till varukorgen. Genom att skapa en anpassad require-js-modul för att dynamiskt manipulera knappens synlighet kan problemet lösas.

Steg 1: Skapa en RequireJS-modul

Börja med att skapa en RequireJS-modul som hanterar logiken för att dölja och visa knapparna baserat på antalet varor i varukorgen. Placera denna modul inom din temakatalog eller anpassade modulkatalog.

// app/design/frontend/{Leverantör}/{tema}/web/js/dolj-lagg-till-i-varukorgen.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 () {
            // Logik för att ta bort vara från varukorgen
        });
        
        $('.quantity-controls[data-product-id="' + productId + '"] .btn-increment').on('click', function () {
            // Logik för att öka varuantal
        });
        
        $('.quantity-controls[data-product-id="' + productId + '"] .btn-decrement').on('click', function () {
            // Logik för att minska varuantal
        });
    };
});

Steg 2: Integrera RequireJS-modul i produktmallen

Lägg till JavaScript-modulen i dina produktmallar. Uppdatera produktvy-mallen med denna kod.

<!-- app/design/frontend/{Leverantör}/{tema}/Magento_Catalog/templates/product/view/addtocart.phtml -->
<button type="button" class="action tocart" 
        id="product-addtocart-button" title="<?= $block->escapeHtml(__('Lägg till i varukorgen')) ?>" 
        data-role="tocart" data-product-sku="<?= $block->escapeHtml($block->getProduct()->getSku()) ?>">
    <span><?= /* @escapeNotVerified */ __('Lägg till i varukorgen') ?></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">Ta bort</button>
</div>
<script>
    require(['jquery', 'dolj-lagg-till-i-varukorgen'], function ($, doljLaggTillIVarukorgen) {
        $(document).ready(function () {
            doljLaggTillIVarukorgen({
                productId: '<?= $block->escapeHtml($block->getProduct()->getId()) ?>'
            }, $('#product-addtocart-button'));
        });
    });
</script>

2. Logik för knappvisning

För att säkerställa att "Lägg till i varukorgen"-knappen döljs och kvantitetskontrollerna visas korrekt, spåra varukorgsändringar med hjälp av Knockout.js-observationer.

Steg 1: Uppdatera layout-XML

Inkludera filen dolj-lagg-till-i-varukorgen.js i layouten. Lägg till den i filen default_head_blocks.xml.

<!-- app/design/frontend/{Leverantör}/{tema}/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/dolj-lagg-till-i-varukorgen.js"/>
    </head>
</page>

3. Testning och felsökning

När du har implementerat ändringarna:

  1. Rensa Cache: Rensa Magento-cachen för att säkerställa att ändringarna visas korrekt.
  2. Testa funktionalitet: Kontrollera att "Lägg till i varukorgen"-knappen döljs vid klickning och att kvantitetskontroller visas.
  3. Testning i olika webbläsare: Testa funktionaliteten i olika webbläsare för att kontrollera kompatibilitet.
  4. Specialfall: Ta hänsyn till fall där flera exemplar av samma produkt läggs till och säkerställ att gränssnittet fungerar som förväntat.

Slutsats

Genom att implementera dynamisk knappbeteende i Magento 2 förbättras inte bara interaktionen med användare utan även shoppingprocessen. Genom att göra små ändringar i frontend kan du erbjuda kunderna ett effektivare sätt att hantera sina varor direkt från produktsidan.

Genom att följa denna guide kommer din e-handelsplattform inte bara att erbjuda en överlägsen användarupplevelse utan du kommer även bättre att kunna hantera anpassade krav på front-end som är skräddarsydda för ditt företags behov.

Vanliga frågor

Hur rensar jag Magento-cachen?

Du kan rensa Magento-cachen via adminpanelen. Navigera till System > Cache-hantering och klicka på "Rensa Magento-cache".

Är denna metod kompatibel med anpassade teman?

Ja, denna metod är flexibel och kan anpassas till anpassade teman. Se till att du placerar RequireJS-modulen och uppdaterar mallarna därefter.

Kan jag anpassa designen för kvantitetskontrollerna?

Absolut. HTML och CSS för kvantitetskontrollerna kan anpassas för att passa ihop med din butiksdesign.

Genom att följa denna guide blir din Magento 2-butik inte bara mer användarvänlig, utan du blir också bättre rustad för att hantera anpassade front-end-krav som är anpassade efter dina affärsbehov.