Ответы:
Сначала отредактируйте шаблон корзины /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
и добавьте идентификатор в элемент формы для более удобного доступа. Допустим, вы добавили 'id = "cart-form"';
Теперь отредактируйте шаблоны, которые отображают элементы корзины:
и на <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()
});
}
);
});
Я должен отметить, что это делает следующие предположения:
Должно быть легко настроить селекторы в коде в строках 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>
элемент (или в моем случае <select>
элемент, так как я создал выпадающее поле для выбора суммы) с именем name="cart[<?php echo $_item->getId() ?>][qty]"
и добавить это:
onchange="this.form.submit()"
Файл phtml, который вы должны отредактировать, находится здесь:
app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml