Yanıtlar:
Önce alışveriş sepeti şablonunu düzenleyin ve /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
daha kolay erişim için form öğesine bir kimlik ekleyin. Diyelim ki 'id = "cart-form"';
Şimdi alışveriş sepeti öğelerini oluşturan şablonları düzenleyin:
ve <input>
şu isme sahip öğeye şunu cart[<?php echo $_item->getId() ?>][qty]
ekleyin:
onchange="$('cart-form').submit()"
Ama bunu yapmanızı önermiyorum. Kullanıcılar için gerçekten can sıkıcı. (en azından benim için).
Sitenizde çakışma yok modunda jQuery bulunduğunu varsayarsak, bunu eşzamansız olarak yapmanın bir yolu (çok daha az can sıkıcı!).
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()
});
}
);
});
Bunun aşağıdaki varsayımları yaptığına dikkat çekmeliyim:
2. ve 5. satırlardaki koddaki seçicileri durumunuza göre ayarlamak kolay olmalıdır.
Bu iki dosyayı düzenle
app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml
ve şu isme sahip öğeye şunu cart[<?php echo $_item->getId() ?>][qty]
ekleyin:
onchange="this.form.submit()"
JQuery sürümünüz eskiyse başarılı olmazsınız. Aşağıdaki gibi bir yol buldum, dostumuz Marius'un ekleme talimatlarını takip edin
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
ve daha kolay erişim için form öğesine bir kimlik ekleyin. Diyelim ki ekledinizid="cart-form"
Şimdi dosyayı aç
app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml
Ve dosyanın sonuna kaydırın ve miktarın artışını ve azalmasını yapan javascript'i bulacaksınız. İşlev şu şekilde görünecektir:
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;
}
}
Bunun için değişiklik:
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();
}
}
Yüklü (henüz) jQuery yoksa, aynı zamanda adı ile <input>
öğeyi (ya da benim durumumda bir <select>
öğe oluşturmak için bir açılır alan oluşturduğum için) bulabilirsiniz name="cart[<?php echo $_item->getId() ?>][qty]"
ve bunu ekleyin:
onchange="this.form.submit()"
Düzenlemek zorunda olduğunuz phtml dosyası burada bulunur:
app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml