Автоматическое обновление количества в корзине при изменении количества

magento.stackexchange https://magento.stackexchange.com//questions/55707

Вопрос

В корзине Magento по умолчанию, когда клиент редактирует количество, ему / ей нужно нажать кнопку, чтобы обновить количество.

Есть ли способ, чтобы корзина автоматически обновляла количество, когда пользователь вводит другое число в поле количество?

Это было полезно?

Решение

Сначала отредактируйте корзину Template /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml и добавьте идентификатор на элемент форме для более простого доступа.Допустим, вы добавляете «id=» форму корзины "';

Теперь отредактируйте шаблоны, которые отображают элементы тележки:

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

    и на элементе <input> с именем cart[<?php echo $_item->getId() ?>][qty] Добавьте это:

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

    Но я не рекомендую сделать это.Это действительно раздражает для пользователей.(по крайней мере для меня).

Другие советы

Предполагая, что ваш сайт имеет jQuery, включенный в режим без конфликта, вот способ выполнения этого асинхронно (гораздо менее раздражает!).

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()
            });
        }
    );
});
.

Я должен указать, что это делает следующие допущения:

    .
  • Ваша корзина с корзиной проживает в элементе с идентификатором cart-table
  • Ваши поля ввода для Количество имеют атрибут имени, который заканчивается [qty]

    Следует легко настроить селекторы в коде на линии 2 и 5 соответственно, чтобы соответствовать вашим обстоятельствам.

Редактировать эти два файла

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

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

А на элементе с именем cart[<?php echo $_item->getId() ?>][qty] Добавьте это:

onchange="this.form.submit()"
.

Если ваша версия jQuery старая, вам не удастся.Я нашел способ, который выглядит следующим образом, следуя инструкциям нашего друга Мариуса для вставки

/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml и добавьте идентификатор на элементе формы для более простого доступа.Допустим, вы добавите id="cart-form"

Теперь открыть файл

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

и прокрутите до конца файла, и вы найдете JavaScript, который выполняет приращение и уменьшение количества.Функция будет выглядеть так:

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;
    }
}
.

Изменение для этого:

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();   
    }
}
.

В случае, если у вас еще не загружен jQuery (пока), вы также можете найти <input> элемент (или, в моем случае, a <select> элемент, так как я создал выпадающее поле для выбора суммы) с именем name="cart[<?php echo $_item->getId() ?>][qty]" и добавьте это:

onchange="this.form.submit()"

Файл phtml, который вам необходимо отредактировать, находится здесь:

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top