Question

Dans le panier par défaut de Magento, lorsque le client modifie la quantité, il doit appuyer sur le bouton pour mettre à jour la quantité.

Existe-t-il un moyen pour que le panier mette automatiquement à jour la quantité lorsque l'utilisateur saisit un autre numéro dans le champ quantité ?

Était-ce utile?

La solution

Modifiez d'abord le modèle de panier /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml et ajoutez un identifiant sur l'élément de formulaire pour un accès plus facile.Disons que vous ajoutez 'id="cart-form"' ;

Modifiez maintenant les modèles qui affichent les éléments du panier :

  • app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
  • app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

et sur le <input> élément avec le nom cart[<?php echo $_item->getId() ?>][qty] Ajoute ça:

onchange="$('cart-form').submit()"

Mais je ne recommande pas de faire cela.C'est vraiment ennuyeux pour les utilisateurs.(au moins pour moi).

Autres conseils

En supposant que votre site ait JQuery inclus en mode sans conflit, voici une façon de le faire de manière asynchrone (beaucoup moins ennuyeuse!).

jQuery(document).ready(function(){
jQuery('#shopping-cart-table')
    .on(
        'change',
        'input[name$="[qty]"]',
        function(){
            var form = jQuery(jQuery(this).closest('form'));

            // we'll extract the action and method attributes out of the form

            // kick off an ajax request using the form's action and method,
            // with the form data as payload
            jQuery.ajax({
                url: form.attr('action'),
                method: form.attr('method'),
                data: form.serializeArray()
            });
        }
    );
});

Je dois souligner que cela fait les hypothèses suivantes:

  • Votre panier vit dans un élément avec l'ID de Shopping-Cart-Table
  • Vos champs de saisie pour Quantité ont un attribut de nom qui se termine par [Qté]

    Il doit être facile d'ajuster les sélecteurs dans le code sur les lignes 2 et 5 respectivement pour correspondre à votre situation.

Modifier ces deux fichiers

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml

app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

et sur l'élément avec le nom cart[<?php echo $_item->getId() ?>][qty] Ajouter ceci:

onchange="this.form.submit()"

Si votre version de jQuery est ancienne, vous ne réussirez pas.J'ai trouvé un moyen qui est le suivant, suivez comme les instructions de notre ami Marius pour insérer

/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml et ajoutez un identifiant sur l'élément de formulaire pour un accès plus facile.Disons que vous ajoutez id="cart-form"

Maintenant, ouvrez le fichier

app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

Et faites défiler jusqu'à la fin du fichier et vous trouverez le javascript qui incrémente et décrémente la quantité.La fonction ressemblera à ceci :

function plusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    qty++;
    $('qty'+itemId).value = qty;
}

function minusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    if(qty>0){
        qty--;
        $('qty'+itemId).value = qty;
    }
}

Changez pour ceci :

function plusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    qty++;
    $('qty'+itemId).value = qty;
    document.getElementById("cart-form").submit();  
}

function minusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);

    if(qty>0){
        qty--;
        $('qty'+itemId).value = qty;
         document.getElementById("cart-form").submit();   
    }
}

Si vous n'avez pas (encore) chargé jQuery, vous pouvez également trouver le <input>élément (ou dans mon cas un <select> élément puisque j'ai construit un champ déroulant pour sélectionner le montant) avec le nom name="cart[<?php echo $_item->getId() ?>][qty]" et ajoutez ceci :

onchange="this.form.submit()"

Le fichier phtml que vous devez éditer se trouve ici :

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top