Zum Hauptinhalt springen
Wer aus einem gedruckten Katalog oder einer Bestellliste kauft, hat die Produktnummern bereits vor sich liegen. Für ihn ist der Weg über Kategorien und Produktseiten ein Umweg. Die Direktbestellung gibt ihm stattdessen ein Formular, in das er Nummer und Menge Zeile für Zeile einträgt und alles auf einmal in den Warenkorb legt. Typisch ist das im B2B-Geschäft und überall dort, wo Kunden regelmäßig dieselben Artikel nachbestellen. Voraussetzung ist, dass dem Käufer die Produktnummern vorliegen. Diese Seite beschreibt zuerst die Grundintegration und danach vier Ausbaustufen, die aufeinander aufbauen.

Grundintegration

Schritt 1: Den Abschnitt <DirectOrder> anlegen

Legen Sie in der Shopkonfiguration shop.config den Abschnitt <DirectOrder> an, falls er noch nicht vorhanden ist.
Startzeilen und Erweiterungszeilen zusammen dürfen 100 nicht überschreiten. Beginnen Sie eher mit wenigen Zeilen. Ein Formular mit fünf Zeilen und einer Schaltfläche zum Erweitern wirkt einladender als eine Tabelle mit fünfzig leeren Feldern. In den Meldungen können Sie Produkt-Tags verwenden, beispielsweise ~PR-Number~ für die eingegebene Nummer oder ~PR-MinQuantity~ für die Mindestmenge. Der Käufer erfährt damit nicht nur, dass etwas nicht stimmt, sondern auch welche Zeile gemeint ist. Referenz: Abschnitt DirectOrder

Schritt 2: Das Template zuweisen

Referenz: Abschnitt Templates Den Link zur Direktbestellung können Sie in jedem Template setzen.
Optional geben Sie die Zeilenzahl über den Link-Parameter ws_do_lines mit. Der Wert aus der Konfiguration wird damit für diesen Aufruf überschrieben.
Das ist praktisch, wenn Sie zwei Einstiege anbieten wollen: einen kurzen für den Gelegenheitskauf und einen langen für Stammkunden, die eine ganze Bestellliste abarbeiten. Referenz: WS-Link()

Schritt 4: Das Template erstellen

Legen Sie die Datei unter dem Namen an, den Sie bei DirectOrder eingetragen haben, und speichern Sie sie in Ihrem Templateverzeichnis.
Der Ablauf hat zwei Stufen. Mit “Eingaben prüfen” liest der Shop die Nummern, zeigt Namen, Bild und Preis an und meldet Fehler. Erst wenn alles stimmt, erscheint über ST-DirectOrder_OK die Schaltfläche in den Warenkorb. Diese Trennung ist Absicht: Der Käufer sieht, was er bestellt, bevor er es bestellt.
Der ganze Block gehört in {CAT-Data}. Ohne diese Klammer stehen die Produktdaten nicht zur Verfügung, und die Schleife {@PR-Data} bleibt leer.
Referenz: CAT-Data · FORM-DirectOrder · PR-Data · ST-DirectOrder_OK · MSG-DirectOrder_Notify · BT-DirectOrder_Check · BT-DirectOrder_ExtendLines · BT-DirectOrder_Basket · PR-Position · PR-Quantity · PR-Quantity_Input · PR-Number · PR-Number_Input · PR-Number_Value · PR-Name · PR-Name2 · PR-Link · PR-Price · PR-Thumbnail · PR-Inventory · PR-DeliveryText · PR-Variations · PR-DepVariations · PR-DirectOrderVariations · PR-TextInputFields · WS-CurrencySymbol

Eingaben während der Sitzung halten

Direktbestellung Ohne diese Erweiterung sind alle Eingaben weg, sobald der Käufer das Formular verlässt, beispielsweise um eine Produktseite nachzusehen. Bei einer halb ausgefüllten Bestellliste ist das ärgerlich genug, um den Kauf abzubrechen. Die Funktion speichert die geprüften, aber noch nicht in den Warenkorb gelegten Produkte in einem sitzungsbezogenen Cookie. Bei einem erneuten Aufruf des Formulars sind alle Felder wieder gefüllt. Auch wenn betriebsnotwendige Cookies ohne ausdrückliche Einwilligung zulässig sind, stimmen Sie den Einsatz mit Ihrem Datenschutzbeauftragten ab.

Schritt 1: Die JavaScript-Datei einbinden

Voraussetzung ist die WEBSALE JavaScript-Bibliothek oder eine andere jQuery-Bibliothek. Binden Sie die folgende Datei im HTML-Kopf ein.

Schritt 2: Die Übergabeparameter ergänzen

Innerhalb des Formulars brauchen Sie zwei OTP-Parameter. otp1 löst nach der Prüfung das Speichern aus, otp2 nimmt die Scrollposition auf, die das JavaScript vor dem Absenden selbst einträgt.
Das Formular braucht außerdem die ID directorder, über die das JavaScript es findet. Sie steht im Beispiel oben bereits mit drin.

Schritt 3: Die Klassen vergeben

Das JavaScript findet die Felder nicht über die WEBSALE-Tags, sondern über CSS-Klassen. Jede dieser Klassen entspricht einer Option im Funktionsaufruf.
Die Klasse checkProducts gehört an jede Schaltfläche “Eingaben prüfen”. Wenn Sie mehrere davon im Formular haben, beispielsweise oben und unten, und eine davon vergessen, wird über diese Schaltfläche nichts gespeichert. Der Käufer verliert seine Eingaben dann genau dann, wenn er die falsche Schaltfläche erwischt hat.Arbeiten Sie nicht mit einer Tabelle, sondern beispielsweise mit div-Containern, dann bekommt das äußerste Element der Schleife die Klasse direct_order_productLine. Das JavaScript erkennt eine Produktzeile ausschließlich an dieser Klasse.

Schritt 4: Das JavaScript aufrufen

Der Aufruf gehört unterhalb des Formulars.
Achten Sie auf die Kommas. Die letzte feste Option steht ohne Komma, die beiden bedingten Abschnitte bringen ihr Komma jeweils innerhalb der Sektion mit. Andersherum entsteht ein doppeltes oder ein überzähliges Komma, sobald eine der Sektionen nicht greift, und das JavaScript bricht mit einem Syntaxfehler ab. Das Formular funktioniert dann noch, die Zwischenspeicherung aber nicht.
Materialien: Übersicht aller Funktionsparameter des JavaScriptes

Produktnummer auf mehrere Felder aufteilen

Splitting Artikelnummer Lange Produktnummern tippt man leichter in Blöcken. Aus 11129338 wird im Formular 11-1293-38, intern setzt WEBSALE V8s die Nummer wieder zusammen und sucht mit der ungegliederten Form. Diese Ausbaustufe setzt die Zwischenspeicherung aus dem vorigen Abschnitt voraus. Sie ist Teil desselben JavaScripts. Es gibt zwei Wege. Bei beiden ersetzen Sie den Aufruf aus Schritt 4 durch die hier gezeigte Variante.

Standard-Methode

Das JavaScript teilt die Eingabe automatisch in drei Felder auf. Sie müssen dafür nichts ins Template einbauen.
In productElementSeparator tragen Sie das Trennzeichen ein, das in Ihren Produktnummern verwendet wird.

Erweiterte Methode

Hier bestimmen Sie die Zahl der Blöcke selbst. Der Aufruf bekommt zwei zusätzliche Optionen.
generateElements: false sagt dem JavaScript, dass es die Felder nicht selbst erzeugen soll. Sie ergänzen sie stattdessen im Template direkt hinter dem Feld ~PR-Number_Input~, mit der Klasse input_number_part und dem Trennzeichen als Text dazwischen. Zwei Blöcke, beispielsweise 123.123:
Drei Blöcke, beispielsweise 123.123.123:
Das ursprüngliche Feld ~PR-Number_Input~ bleibt stehen. Es nimmt die zusammengesetzte Nummer auf und wird an den Shop übergeben. Die Teilfelder sind reine Eingabehilfe und tragen deshalb auch keinen name. Materialien: Übersicht aller Funktionsparameter des JavaScriptes

Varianten-Produktnummern

Direktbestellung Varianten Gibt der Käufer eine vollständige Varianten-Produktnummer ein, zeigt der Shop ihm standardmäßig genau diese Variante an. Das ist meist das Gewünschte: Er weiß, was er will, und bekommt es. Alternativ können Sie stattdessen das Basisprodukt mit den Auswahllisten anzeigen lassen. Der Käufer muss seine Kombination dann noch einmal selbst wählen.
yes ist dann sinnvoll, wenn Ihre Varianten-Produktnummern im Katalog nicht vollständig abgedruckt sind oder wenn Käufer erfahrungsgemäß die Nummer der falschen Ausführung eintippen. Der Umweg über die Auswahlliste kostet einen Klick, verhindert aber Fehlbestellungen. Referenz: Abschnitt DirectOrder

Alternative Produktnummern

20200824 Ean Käufer tippen nicht immer die Nummer ein, die Sie im Kopf haben. Sie tippen die EAN vom Etikett, die Nummer aus dem Katalog des Vorjahres oder Ihre eigene Lieferantennummer. Mit alternativen Produktnummern findet der Shop das Produkt trotzdem. Eingegeben wird alles in dasselbe Feld. Der Shop durchsucht die von Ihnen festgelegten Produktfelder nach der eingegebenen Zeichenfolge und zeigt das gefundene Produkt an. Eine Freischaltung ist dafür nicht nötig.

Schritt 1: Die Produktdaten pflegen

Tragen Sie die alternativen Nummern in den entsprechenden Produktfeldern ein. Möglich sind bis zu fünf alternative Nummern je Produkt, AltNumber1 bis AltNumber5.

Schritt 2: Die Suchfelder festlegen

Die Reihenfolge in NumberSearchFields ist die Suchreihenfolge. Der Shop geht die Felder von links nach rechts durch und hört beim ersten Treffer auf. Steht dieselbe Zeichenfolge bei zwei verschiedenen Produkten in unterschiedlichen Feldern, gewinnt das Feld, das weiter vorn steht. Setzen Sie Number deshalb an den Anfang.
Für die beiden Fälle gibt es zwei verschiedene Meldungen. Notify3-Txt greift, wenn die Suche im Feld Number erfolglos bleibt, Notify8-Txt bei den Alternativfeldern. Wenn Sie die Alternativsuche nutzen, formulieren Sie Notify8-Txt so, dass der Käufer nicht an der Produktnummer zweifelt, obwohl er die EAN eingegeben hat. Die eingegebenen alternativen Nummern lassen sich auch anzeigen, beispielsweise auf der Produktdetailseite oder im Warenkorb, und ein Produkt lässt sich über eine alternative Nummer gezielt laden. Referenz: Abschnitt DirectOrder · PR-AltNumber1…5 · BASKET-PR-AltNumber1…5 · PR-LoadData()

Verwandte Themen