Neu Warenkorb Formular: Zwei oder mehr Artikel gleichzeitig in den Warenkorb legen

  • Hinweis: Am 25.02.2025 zwischen 21:30 u. 22:30 Uhr - Einschränkungen beim Login und Erreichen folgender Dienste: FFN, Kundencenter, Admin, JTL-Shop, JTL-Wawi, Lizenzserver, ISI Gateway, Vouchers, Kassensysteme, Plan&Produce, Versand. Grund dafür ist ein Major Upgrade des OAuth-Dienstes. Vielen Dank für euer Verständnis!

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
158
17
Mein Ziel ist es ein Formular zu erstellen, mit welchem ich zwei Artikel gleichzeitig in den Warenkorb legen kann.

Meine Recherche hat ergeben:


Ja, du kannst beide Artikel in ein einziges Formular packen, indem du mehrere a (Artikelnummern) und anzahl (Menge) Felder verwendest.

Die meisten Shopsysteme (wie JTL, WooCommerce, Magento etc.) unterstützen das Hinzufügen mehrerer Artikel mit einer einzigen Anfrage, indem man mehrere a-Parameter (Artikelnummern) im Formular sendet.


Hier mein Code Beispiel:

HTML:
<form class="form form-basket jtl-validate" method="POST" data-toggle="basket-add" id="combinedForm">
    <input type="hidden" class="jtl_token" name="jtl_token" value="${$('.jtl_token:first-of-type').val()}">
 
    <!-- Erster Artikel (Umtopfservice) -->
    <input type="hidden" name="a[]" value="${selectedUmtopfKArtikel}">
    <input type="hidden" name="anzahl[]" value="${selectedPlants}">
 
    <!-- Zweiter Artikel (Aufzuchtsdauer) -->
    <input type="hidden" name="a[]" value="${growArticles[selectedGrowWeeks]}">
    <input type="hidden" name="anzahl[]" value="${selectedPlants}">

    <!-- Warenkorb-Button -->
    <button type="submit" class="btn btn-primary mt-2">
        <span class="fa fa-shopping-cart me-2" aria-hidden="true" style="margin-right:5px"></span> In den Warenkorb
    </button>
</form>

Ich habe auch versucht, den einzelnen Einträgen im Array eine Nummer zu geben, hat aber auch nix gebracht.

So wie hier:


HTML:
<form class="form form-basket jtl-validate" method="POST" data-toggle="basket-add" id="combinedForm">
    <input type="hidden" class="jtl_token" name="jtl_token" value="${$('.jtl_token:first-of-type').val()}">
 
    <!-- Erster Artikel (Umtopfservice) -->
    <input type="hidden" name="a[0]" value="${selectedUmtopfKArtikel}">
    <input type="hidden" name="anzahl[0]" value="${selectedPlants}">
 
    <!-- Zweiter Artikel (Aufzuchtsdauer) -->
    <input type="hidden" name="a[1]" value="${growArticles[selectedGrowWeeks]}">
    <input type="hidden" name="anzahl[1]" value="${selectedPlants}">

    <!-- Warenkorb-Button -->
    <button type="submit" class="btn btn-primary mt-2">
        <span class="fa fa-shopping-cart me-2" aria-hidden="true" style="margin-right:5px"></span> In den Warenkorb
    </button>
</form>


Hier die Erklärung, die ich recherchiert habe:


Erklärung

  1. Ein einziges <form> für beide Artikel
    • Jeder Artikel hat seine eigene Zeile mit a[] und anzahl[].
    • a[] bedeutet, dass mehrere Artikel übergeben werden können.
    • anzahl[] ist für die Menge der jeweiligen Artikel.
  2. Der Button sendet das gesamte Formular ab
    • Beide Artikel werden auf einmal dem Warenkorb hinzugefügt.
    • Kein setTimeout(), kein doppeltes submit() nötig.
  3. Warum a[] und anzahl[]?
    • Die meisten Shopsysteme (inkl. JTL) unterstützen Arrays in Formularfeldern.
    • So kannst du mehrere Artikel mit nur einem einzigen POST-Request hinzufügen.

Nun bekomme ich aber folgende Fehlermeldung in der Console im Browser angezeigt:





11.png


Die Funktion dazu schaut so aus:

JavaScript:
addToBasket: function($form, data, direct) {

            var $main = $form;

            if (typeof data === 'undefined') {

                data = $form.serializeObject();

            }

            var productId = parseInt(data[this.options.input.id]);

            var quantity = parseFloat(data[(this.options.input.quantity)].replace(',', '.'));

            if (productId > 0 && quantity > 0) {

                this.pushToBasket($main, productId, quantity, data, direct);

            }

        },


Fazit

Das Problem entsteht, weil data[this.options.input.quantity] kein String ist, sondern möglicherweise ein Array oder undefined.
Die beste Lösung ist:

  1. String-Konvertierung nutzen (String(data[...]))
  2. Erstes Element des Arrays nutzen, falls nötig (Array.isArray(quantityData) ? quantityData[0] : ...)

Und jetzt?

Ich möchte ja die originale JTL Funktion nicht verändern müssen deswegen.

Hat jemand eine Idee ?
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Warenkorb Anzeige Problem für Kleinunternehmer Allgemeine Fragen zu JTL-Shop 6
Neu Aufschlag in % auf gesamten Warenkorb Fragen rund um LS-POS 0
Neu Wie legt man eine Freiposition in den Warenkorb? Technische Fragen zu Plugins und Templates 13
Neu Wie kann man den Preis eines Artikels beim in den Warenkorb legen verändern? Technische Fragen zu Plugins und Templates 3
Neu Artikelkurzbeschreibung im Warenkorb Allgemeine Fragen zu JTL-Shop 3
Neu Kasse Button fehlt im Warenkorb Allgemeine Fragen zu JTL-Shop 0
Neu Gratisartikel werden plötzlich aus Warenkorb entfernt Allgemeine Fragen zu JTL-Shop 5
Neu Warenkorb im Merkliste umbenennen, kein Verkauf über Shop , nur Angebote anfragen Allgemeine Fragen zu JTL-Shop 0
Neu Lagerbestand aber kann nicht in Warenkorb gelegt werden JTL-Shop - Fehler und Bugs 0
Neu Kauf aus Österreich wird im Warenkorb mit 19% angezeigt Betrieb / Pflege von JTL-Shop 0
Neu Warenkorb Button in Artikelliste + Suchergebnissen ausblenden Allgemeine Fragen zu JTL-Shop 6
Neu Gratisgeschenke nicht verfügbar für Kundengruppe X - Warenkorb-Fehler JTL-Shop - Fehler und Bugs 0
Neu JTL Connector erzeugt auf diversen Seiten wie etwa dem Warenkorb einen Bad Gateway 502 nach Update zu Woocommerce Version 9.4.3 WooCommerce-Connector 0
Neu Warenkorb für einzelne Produkte Deaktivieren Allgemeine Fragen zu JTL-Shop 3
Neu HTTP ERROR 500 - Warenkorb nicht aufrufbar Technische Fragen zu Plugins und Templates 0
Neu Konfigurator, Preise der Konfigurations-Komponenten im Warenkorb falsch JTL-Shop - Fehler und Bugs 2
Etiketten Formular Bild bei besteimmten Werten des Artikels ausgeben JTL-Wawi 1.9 2
Eigene Felder im Formular abfragen? JTL-Wawi 1.9 4
Artikelbeschreibung in Rechnung Formular JTL-Wawi 1.9 3
Neu Eigenes Formular erstellen für Kundenservice Allgemeine Fragen zu JTL-Shop 7
Neu DHL Transportverscherung Formular Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Workflow-Bedingungen für Teillieferung aus zwei Lagern (Lager A & Lager B) User helfen Usern - Fragen zu JTL-Wawi 1
Neu 1 Lager, mit zwei Lagerbeständen von zwei Firmen User helfen Usern - Fragen zu JTL-Wawi 9
Neu Zwei Wawi Dropshipping und Warenbestand Übertragung User helfen Usern - Fragen zu JTL-Wawi 4

Ähnliche Themen