
Warum ein eigenes Formular nötig ist
Die Warenkorbseite kann eine Menge nicht selbst ändern. Zuständig dafür ist das Produktformular, dasselbe, mit dem ein Produkt in den Warenkorb gelegt wird. Es erwartet das FeldPR-Quantity_Input und gehört zur Produktdetailansicht, nicht zum Warenkorb.
Die Lösung besteht deshalb aus zwei Formularen je Warenkorbzeile:
Das versteckte Formular steht nicht von Anfang an auf der Seite. Es wird erst beim ersten Antippen der Bedienelemente für diese eine Position nachgeladen, über
BASKET-PR-ChangeLink und ein eigenes kleines Template. Danach spiegelt das Skript jede Änderung in dieses Formular und sendet es ab. Die Antwort lädt den gesamten Warenkorb neu.
Wegweiser: Produkt per AJAX in den Warenkorb legen · AJAX-Funktionen
Schritt 1: Die AJAX-Bibliothek einbinden
Die Versionsnummer im Dateinamen ist der Stand zum Zeitpunkt dieser Beschreibung. Prüfen Sie vor der Einbindung, welche Fassung aktuell ist. Bequemer ist die Einbindung über das PageSpeed-Werkzeug, das die Datei mitverwaltet.Ist das Modul in Ihrem Shop bereits global eingebunden, entfällt dieser Schritt.
Schritt 2: Die Anzeigebereiche anlegen
Innerhalb des Warenkorbformulars aufws_basket.htm:
aria-live="polite" sorgt dafür, dass Hilfsmittel die Änderung ansagen. Ohne diese Angabe tauscht sich der Warenkorb lautlos aus, und wer die Seite nicht sieht, merkt nicht, dass die Menge übernommen wurde.
Schritt 3: Die Bedienelemente in die Warenkorbzeile
Im Include{Incl-Basket}, innerhalb der Schleife über die Positionen:
{ST-BasketPage} sorgt dafür, dass die Bedienelemente nur auf der Warenkorbseite erscheinen. Dasselbe Include wird an anderen Stellen für den Kurzwarenkorb verwendet, und dort genügt die reine Mengenangabe.
type="number" mit min="1" gehört zum Mengenfeld, nicht type="text". Bei type="text" bleibt min wirkungslos, und auf Mobilgeräten erscheint die Buchstabentastatur.
Referenz: BASKET-PR-Number · BASKET-PR-Quantity · BASKET-PR-ChangeLink · ST-BasketPage
Schritt 4: Das versteckte Produktformular
Legen Sie ein Templateincl_basket_quantity_change.htm in Ihrem Templateverzeichnis an:
Referenz: WS-OTPX · FORM-Product · BT-ProductAddToBasket_Ajax · PR-PrintHiddenDepVariations · ST-PR_Change
Schritt 5: Die beiden AJAX-Antworttemplates
Aufws_basket_ajax_error.htm:
ws_basket_ajax_success.htm:
Schritt 6: Das Skript
Der erste Teil lädt das versteckte Formular nach, sobald der Käufer die Bedienelemente einer Position zum ersten Mal berührt:Was die einzelnen Teile leisten
Das versteckte Feld
basket-pr-currentval hält den Wert, den der Shop zuletzt bestätigt hat. Lehnt der Shop eine Menge ab, beispielsweise wegen einer Höchstbestellmenge oder weil der Lagerbestand nicht reicht, springt die Anzeige damit auf den gültigen Stand zurück.
Der Auslöser für das Nachladen ist mousedown und nicht click. Dadurch ist das versteckte Formular in der Regel schon da, wenn der Klick ausgewertet wird. Auf Geräten mit Touch-Bedienung löst der erste Druck dasselbe Ereignis aus.
Verwandte Themen
- Wegweiser: Produkt per AJAX in den Warenkorb legen
- Wegweiser: AJAX-Funktionen
- Wegweiser: Warenkorb anzeigen und löschen
- Wegweiser: Bestellmenge eines Produkts
- Referenz: BASKET- (Warenkorb)
