Zum Hauptinhalt springen
Manche Angaben gehören nicht zum Produkt, sondern zur Bestellung dieses Produkts: der gewünschte Liefertermin für genau diese Position, eine Kostenstelle, ein Hinweis für die Kommissionierung. Solche Angaben kann der Käufer nicht bei der Produktauswahl machen, sondern erst im Warenkorb. WEBSALE V8s bietet dafür zwei Wege, die sich im Aufwand deutlich unterscheiden: Diese Seite beschreibt beide, beginnend mit dem einfacheren. Geht es Ihnen um Texteingaben zum Produkt selbst, beispielsweise eine Beflockung, gehören diese auf die Produktdetailansicht und nicht in den Warenkorb.

Teil 1: Freie Textfelder je Warenkorbposition

Je Position stehen zwanzig Felder zur Verfügung, jedes mit bis zu 4048 Zeichen. Der Käufer kann sie im Bestellablauf jederzeit ändern.

Schritt 1: Freischaltung

Eine Freischaltung durch WEBSALE ist nicht erforderlich.

Schritt 2: Zeichen aus den Eingaben entfernen

Optional, aber empfehlenswert. Tragen Sie alle Zeichen ein, die der Shop aus den Eingaben entfernen soll.
Referenz: Abschnitt BasketEntries

Schritt 3: Eingabefelder auf der Warenkorbseite einbauen

Die Felder gehören auf ws_basket.htm innerhalb der Positionsschleife. Zu jedem Feld gehören zwei Tags: eines liefert den Feldnamen, das andere den bereits gespeicherten Wert.
Der Feldname enthält die Nummer des Feldes und die Nummer der Warenkorbposition, damit die Eingaben auseinandergehalten werden. Sie müssen dafür nichts tun, das Tag erledigt es. Die Schaltfläche zum Speichern gehört in dasselbe Formular wie die Felder, aber nur einmal, nicht in die Schleife. Andernfalls steht sie hinter jeder Position, obwohl sie ohnehin alle Felder auf einmal speichert.

Schritt 4: Inhalte auf anderen Seiten ausgeben

Die Werte stehen auf allen Seiten zur Verfügung, die Warenkorbdaten enthalten, beispielsweise auf der Bestellübersicht (ws_place_order.htm). Dort brauchen Sie kein Eingabefeld mehr, sondern nur die Ausgabe.
Die Klammerung verhindert, dass bei Positionen ohne Eingabe eine leere Beschriftung stehen bleibt.

Teil 2: BasketProductOptions

Der zweite Weg kann deutlich mehr und kostet entsprechend mehr Einrichtung. Sie definieren Eingabefelder und Checkboxen in der shop.config, hängen optional Zusatzkosten daran, machen ihr Erscheinen von Bedingungen abhängig und lassen die Eingaben prüfen.

Wo die Felder erscheinen

Das entscheidet der Parameter LevelOfUsage.
Es kann immer nur eine dieser Varianten gleichzeitig im Shop aktiv sein. Legen Sie sich also vorher fest, statt zwei Varianten nebeneinander auszuprobieren.

Schritt 1: Freischaltung

Eine Freischaltung durch WEBSALE ist nicht erforderlich.

Schritt 2: Felder und Kosten konfigurieren

Das folgende Beispiel definiert je Warenkorbposition ein Eingabefeld und eine Checkbox. Ein ausgefülltes Eingabefeld kostet 5 Euro, eine angehakte Checkbox 2 Euro.
Füllen Sie Name bei jedem <+Input> aus. Der Shop bildet den Namen des HTML-Eingabefeldes aus diesem Wert, nicht aus der ID. Bleibt Name leer, erhält das Feld keinen brauchbaren Namen und die Eingabe geht verloren.
Ohne Bedingung fallen die Kosten immer an, auch bei leerem Feld oder nicht angehakter Checkbox. Erst die Bedingung Proof = BasketProductOptionInputID mit Type = filled koppelt die Kosten an die tatsächliche Eingabe. Im Beispiel oben ist das bei beiden Kostensätzen so gemacht. Referenz: Abschnitt BasketProductOptions

Schritt 3: Sichtbarkeit an Bedingungen knüpfen

Optional. Sollen die Felder nur bei bestimmten Produkten, ab einem Bestellwert oder nur bei Split-Order erscheinen, ergänzen Sie innerhalb von <+BasketProductOption> einen Abschnitt <Requirements>.
Referenz: Abschnitt Requirements

Schritt 4: Eingaben prüfen

Ebenfalls optional. Eine Prüfung definieren Sie einmal in <GenericInputChecks> und weisen sie über ihre ID im Parameter +UseGenericInputCheck des jeweiligen <+Input> zu.
Referenz: Abschnitt GenericInputChecks

Schritt 5: Fehlermeldung hinterlegen

Referenz: Abschnitt NotifyMessages-Txt

Schritt 6: Der Feldblock

Dieser Block ist in allen Integrationsvarianten derselbe. Er durchläuft die Felder, unterscheidet Eingabefeld und Checkbox, zeigt eine Fehlermeldung je Feld und listet die zugehörigen Kosten auf.
Das zweite, unsichtbare Feld hinter der Checkbox ist kein Versehen. Ein nicht angehaktes Kontrollkästchen sendet gar nichts, der Shop könnte „nicht angehakt” und „Feld gar nicht vorhanden” sonst nicht unterscheiden. Das mitgesendete Feld auf _hidden sagt ihm, dass die Checkbox angezeigt wurde. Zu den Kosten gibt es weitere Tags, falls Sie mehr ausgeben wollen als Name und Summe: BPO-Costs lässt sich mit einer Kosten-ID als Parameter einschränken, beispielsweise {BPO-Costs(BPO-Cost-ID-1)}. Damit greifen Sie einen bestimmten Kostensatz heraus, statt alle zu durchlaufen. Als Einzeltag gibt ~BPO-Costs~ die Anzahl der Kostensätze aus.

Schritt 7: Den Block an der richtigen Stelle einbauen

Wo der Block hingehört, hängt von LevelOfUsage ab. Die Klammerung mit BPO-LevelOfUsage_… muss dabei zum gewählten Wert passen.

Einmal pro Bestellung (UseOnce)

Auf der Warenkorbseite, außerhalb der Positionsschleife.

Je Warenkorbposition, auf der Produktdetailansicht

Innerhalb des Produktformulars. Eine Schaltfläche zum Speichern brauchen Sie hier nicht, denn alle Eingaben innerhalb von FORM-Product wandern beim Ablegen automatisch in den Warenkorb.

Je Warenkorbposition, auf der Warenkorbseite

Innerhalb der Positionsschleife.

Je Lieferadresse bei Split-Order

Auf der Bestellübersichtsseite. Diese Variante setzt voraus, dass die Aufteilung einer Warenkorbposition auf mehrere Lieferadressen aktiv ist. Die Felder erscheinen, sobald der Käufer auf der Adressseite „An mehrere Adressen liefern” gewählt hat. Der Feldblock gehört hier an zwei Stellen, weil die Bestellübersicht aufgeteilte und nicht aufgeteilte Positionen in getrennten Bereichen ausgibt.

Schritt 8: Gesamtkosten ausgeben

Schritt 9: Eingegebene Werte ausgeben

Für die reine Anzeige, beispielsweise auf der Bestellübersicht, reicht der Wert ohne Eingabefeld. Ob der Block inner- oder außerhalb der Positionsschleife steht, richtet sich nach LevelOfUsage.

Schritt 10: Testmodus beenden

Solange Test = yes gesetzt ist, läuft die Funktion im Testbetrieb. Nach erfolgreichem Test stellen Sie den Parameter im Abschnitt <+BasketProductOption> auf no.

Die BPO-Tags im Überblick

Verwandte Themen