Автоматическое обновление количества в корзине при изменении количества
-
12-12-2019 - |
Вопрос
В корзине 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