Skip to main content
Bei der Direktbestellung gibt der Käufer die Produktnummern der gewünschten Produkte in einen Bestellschein ein. Anschließend kann er alle erfassten Positionen mit einem Klick in den Warenkorb übernehmen. Voraussetzung hierfür ist, dass dem Kunden die entsprechenden Produktnummern vorliegen, beispielsweise anhand eines Katalogs. Dafür ist nichts weiter erforderlich. Zusätzliche Skripte sind nicht nötig.

Eingaben der Direktbestellung während einer Session halten

Der Shop speichert die bei einer Direktbestellung geprüften Produkte, die noch nicht in den Warenkorb gelegt wurden, in der Session. Im Cookie steht nur der Verweis auf die Session. Wenn saveCountInSession unter checkout.directOrder aktiviert ist, merkt sich der Shop dort auch die aktuelle Zahl der Eingabezeilen. Wenn das Formular zur Direktbestellung später erneut aufgerufen wird, werden die gespeicherten Produktdaten automatisch in die entsprechenden Eingabefelder übernommen. So entfällt die erneute Eingabe von Produktnummer und Menge, wenn der Shopbesucher seine Auswahl noch nicht in den Warenkorb gelegt hat, sondern zunächst andere Seiten des Shops besucht hat.

Aktionen

Folgende Aktionen stehen zur Verfügung:

DirectOrderAdd

Diese Aktion prüft die Eingabe einer Zeile und trägt das Produkt in die Bestellschein-Liste ein. In den Warenkorb legt sie nichts, dafür gibt es einen eigenen Schritt, siehe Positionen in den Warenkorb übernehmen.

DirectOrderDelete

Diese Aktion entfernt eine Zeile aus der Bestellschein-Liste. Der Warenkorb bleibt davon unberührt.

Integration der Direktbestellung

Template erstellen

Erstellen Sie im Verzeichnis views/modules eine neue Datei directOrder.htm. In dieser Datei werden mehrere Reihen für die jeweiligen Bestellpositionen erzeugt.

Fehlermeldungen

Die Fehlermeldungen können entweder vor oder innerhalb des Form-Elements platziert werden. Die Aktion DirectOrderAdd meldet nicht alle Fehler am selben Feld:
  • Fehler zur Menge stehen unter errorsByField.quantity.
  • Fehler zur Artikelnummer und zum Produkt stehen unter errorsByField.id.
  • Fehler der Artikelnummern-Felder aus itemNumberFields stehen unter dem Namen des jeweiligen Eingabefeldes. Das betrifft itemNumberCheckFailed und missingId bei einem leeren Pflichtfeld.
In diesem Beispiel werden Fehlermeldungen angezeigt, wenn die Menge eines Artikels falsch eingegeben wird.
In diesem Beispiel werden Fehlermeldungen beim Hinzufügen eines Artikels angezeigt. Die zweite Schleife gibt zusätzlich die Fehler der Artikelnummern-Felder aus. Die Typprüfung ist nötig, weil itemNumberFields auch Trennzeichen enthält und diese keinen name haben.
Die Ausgabe je Artikelnummern-Feld ergänzt die Ausgabe von errorsByField.id, sie ersetzt diese nicht. Wenn sich die zusammengesetzte Artikelnummer keinem Produkt zuordnen lässt, meldet die Aktion invalidId am Feld id. Das gilt auch dann, wenn die Zeile gar kein Eingabefeld id enthält.

Positionen in den Warenkorb übernehmen

Ein eigenes Formular legt die erfassten Positionen mit der Aktion BasketItemAdd in den Warenkorb. Dabei wird pro Position ein verstecktes Feld mit dem Namen multiProducts.<Produktnummer>.quantity übermittelt. Bei aktiver Werbemittelkennzeichnung wird zusätzlich das Feld multiProducts.<Produktnummer>.insert übermittelt. Ohne diesen Schritt entsteht nie eine Bestellung.
Mehr dazu steht in der Modulreferenz unter Positionen in den Warenkorb übernehmen. Sie können in jedem Template den Link zur Direktbestellung integrieren. Dieser lautet: