Antworten:
Bearbeiten Sie zuerst die Warenkorbvorlage /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
und fügen Sie dem Formularelement eine ID hinzu, um den Zugriff zu erleichtern. Angenommen, Sie fügen 'id = "cart-form"' hinzu.
Bearbeiten Sie nun die Vorlagen, mit denen die Warenkorbelemente gerendert werden:
und füge auf dem <input>
Element mit dem Namen folgendes cart[<?php echo $_item->getId() ?>][qty]
hinzu:
onchange="$('cart-form').submit()"
Aber ich empfehle das nicht. Es ist wirklich ärgerlich für die Benutzer. (zumindest für mich).
Angenommen, Ihre Site verfügt über jQuery im No-Conflict-Modus. Hier ist eine Möglichkeit, dies asynchron zu tun (viel weniger ärgerlich!).
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()
});
}
);
});
Ich möchte darauf hinweisen, dass dies folgende Annahmen voraussetzt:
Es sollte einfach sein, die Selektoren im Code in Zeile 2 bzw. 5 an Ihre Umstände anzupassen.
Bearbeiten Sie diese beiden Dateien
app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml
und cart[<?php echo $_item->getId() ?>][qty]
füge auf dem Element mit dem Namen folgendes hinzu:
onchange="this.form.submit()"
Wenn Ihre jQuery-Version alt ist, ist dies nicht erfolgreich. Ich habe einen Weg gefunden, der wie folgt ist: Folgen Sie den Anweisungen unseres Freundes Marius, um sie einzufügen
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
und fügen Sie dem Formularelement eine ID hinzu, um den Zugriff zu erleichtern. Nehmen wir an, Sie fügen hinzuid="cart-form"
Jetzt Datei öffnen
app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml
Scrollen Sie zum Ende der Datei und Sie werden das Javascript finden, das das Inkrementieren und Dekrementieren der Menge vornimmt. Die Funktion sieht folgendermaßen aus:
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;
}
}
Ändern Sie dafür:
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();
}
}
Falls Sie jQuery (noch) nicht geladen haben, können Sie auch das <input>
Element (oder in meinem Fall ein <select>
Element, da ich ein Dropdown-Feld zur Auswahl des Betrags erstellt habe) mit dem Namen suchen und Folgendes name="cart[<?php echo $_item->getId() ?>][qty]"
hinzufügen:
onchange="this.form.submit()"
Die zu bearbeitende HTML-Datei befindet sich hier:
app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml