Zum Hauptinhalt springen
Eine Packstation braucht andere Angaben als eine Haustür: eine Postnummer statt eines Landes, eine Stationsnummer statt einer Straße. Zeigen Sie dem Käufer beides gleichzeitig, füllt er die Hälfte falsch aus. Besser ist, ihn zuerst den Adresstyp wählen zu lassen und dann nur die Felder zu zeigen, die dazu passen. WEBSALE V8s nennt das eingabeabhängige Adressdatensteuerung: Die Auswahl in einem Adressfeld steuert Sichtbarkeit, Beschriftung und Pflichtstatus der übrigen Felder. Diese Seite führt das am Beispiel „postalische Lieferadresse oder DHL Packstation” durch. Das Verfahren selbst ist nicht auf zwei Typen begrenzt und lässt sich auf beliebige Fälle übertragen, beispielsweise auf Privat- und Firmenadressen. Packstation Das Ein- und Ausblenden läuft über AJAX. Ohne JavaScript im Browser des Käufers bleibt die Seite bei der Ausgangsansicht stehen. Denken Sie deshalb an eine Rückfallebene, in der alle Felder sichtbar sind. Der Weg dorthin führt über sieben Einträge in der shop.config und sechs Ergänzungen im Design.

Schritt 1: Felder anlegen

Legen Sie im Abschnitt <DeliveryAddressFields-Txt> alle Felder an, die einer der beiden Adresstypen braucht. Die Auswahl des Typs bekommt ein eigenes Feld, hier Suffix1.
Straße und Packstationsnummer teilen sich absichtlich dasselbe technische Feld. Viele Warenwirtschaftssysteme nehmen nur eine begrenzte Zahl von Adressfeldern entgegen. Klären Sie vorab mit Ihrer Warenwirtschaft, in welche Felder die Daten übergeben werden sollen, bevor Sie die Zuordnung festlegen. Referenz: Abschnitt DeliveryAddressFields-Txt

Schritt 2: Auswahlmöglichkeiten definieren

Das Feld Suffix1 bekommt seine Einträge in einem eigenen Abschnitt, direkt unterhalb von <DeliveryAddressFields-Txt>. Die Liste ist beliebig erweiterbar.
Wegweiser: Auswahllisten der Adressdaten · Referenz: Abschnitt D-Suffix..

Schritt 3: Standardtyp festlegen

Welcher Typ beim Anlegen einer neuen Adresse vorausgewählt ist, steht im Abschnitt <DeliveryAddressFields-Standards>. Eingetragen wird der Value aus Schritt 2.
Referenz: Abschnitt DeliveryAddressFields-Standards

Schritt 4: Sichtbarkeit der Felder steuern

Für das Beispiel ergibt sich diese Aufteilung: Für Felder, die in beiden Fällen erscheinen, ist nichts zu tun. Nur die beiden abweichenden Felder brauchen eine Regel im Abschnitt <AddressFields-InputVisibility>.
Lassen Sie ResetIfHidden auf yes. Sonst wandert der Wert eines ausgeblendeten Feldes mit in die Bestellung, beispielsweise ein Land, das der Käufer vor dem Wechsel zur Packstation eingetragen hatte. Referenz: Abschnitt AddressFields-InputVisibility

Schritt 5: Pflichtfelder festlegen

Pflichtfelder stehen im Abschnitt <InputCheck>. Felder, die für beide Typen gelten, fassen Sie in einer Zeile zusammen.
Die beiden abweichenden Felder bekommen dieselbe Bedingung wie in Schritt 4, damit sie nur beim passenden Adresstyp Pflicht sind.
Vergessen Sie die Bedingung hier, wird ein ausgeblendetes Feld zum Pflichtfeld. Der Käufer bekommt dann eine Fehlermeldung zu einem Feld, das er gar nicht sieht.
Referenz: Abschnitt InputCheck · Wegweiser: Prüfungen von Adressdaten festlegen

Schritt 6: Beschriftungen umbenennen

Weil Street1 je nach Typ etwas anderes bedeutet, soll sich auch die Beschriftung ändern. Die Grundbeschriftung steht in <DeliveryAddressFields-Txt>, die abweichende in <AddressFields-AlternativeText>.
Referenz: Abschnitt AddressFields-AlternativeText

Schritt 7: Auslösendes Feld benennen

Damit eine Änderung an Suffix1 das Nachladen überhaupt anstößt, wird das Feld im Abschnitt <AddressFields-Actions> als auslösend gekennzeichnet.
Der Shop schaltet Felder, die in Bedingungen von Sichtbarkeit, Beschriftung oder Pflichtprüfung vorkommen, zusätzlich selbst aktiv. Der ausdrückliche Eintrag schadet aber nicht und macht die Absicht im Konfigurationsfile sichtbar. Referenz: Abschnitt AddressFields-Actions

Schritt 8: Felder ins Template setzen

Die Felder gehören in das Formular auf beiden Templates, die eine Lieferadresse entgegennehmen: ws_address_combined.htm im Bestellablauf und ws_deliv_address_manage.htm im Kundenkonto. Jedes Feld folgt demselben Aufbau. Die Klammerung {D-…[_visible](/v8s/referenz/tags/d-lieferadresse)} entscheidet über die Anzeige, {D-…[_action](/v8s/referenz/tags/d-lieferadresse)} fügt den AJAX-Aufruf nur dort ein, wo er gebraucht wird, und {D-…[_required](/v8s/referenz/tags/d-lieferadresse)} markiert Pflichtfelder.

Die Typauswahl als Auswahlknöpfe

Ein Auswahlfeld

Ein Textfeld

Alle übrigen Felder des Beispiels bauen Sie nach einem dieser drei Muster: FirstName, LastName, Zip, City und Suffix2 wie das Textfeld, Country wie das Auswahlfeld. Bei Auswahlfeldern löst onchange aus, bei Textfeldern onblur. Ein onchange am Textfeld würde erst beim Verlassen greifen und ein onkeyup bei jedem Tastendruck eine AJAX-Anfrage auslösen.

Die Tag-Endungen im Überblick

Schritt 9: Nachzuladenden Bereich festlegen

Das Nachladen tauscht einen Bereich der Seite aus. Klammern Sie ihn mit <WS-Ajax-…>, wobei die Kennung der ID Ihres Containers entspricht.
Die Klammerung mit {ST-AJAX} sorgt dafür, dass die Bereichsmarkierung nur beim AJAX-Aufruf im Quelltext landet und nicht beim gewöhnlichen Seitenaufbau. Referenz: ST-AJAX · WS-Ajax-<ID> · Wegweiser: AJAX-Funktionen

Schritt 10: Formular-ID vergeben

Das JavaScript spricht das Formular über seine ID an. Diese ID ist der erste Parameter im Aufruf aus Schritt 8.
Auf der Adressseite im Bestellablauf tritt an die Stelle des Formular-Tags ~FORM-Addr~.

Schritt 11: JavaScript-Bibliothek einbinden

Materialien: WEBSALE JavaScript-Bibliothek

Schritt 12: Rückruffunktionen füllen

Die vier Funktionen gehören in Ihre Designkomponente. Darin blenden Sie beispielsweise eine Ladeanzeige ein oder weisen auf eine unterbrochene Verbindung hin.

Schritt 13: Postleitzahl-Assistent nachrüsten

Setzen Sie den Postleitzahl-Assistenten ein, müssen Sie dafür sorgen, dass sein JavaScript nach jedem Nachladen erneut ausgeführt wird. Andernfalls funktioniert er nach dem ersten Typwechsel nicht mehr. Verlagern Sie die Einrichtung dazu aus $(document).ready() in eine eigene Funktion:
Der Aufruf gehört dann innerhalb der AJAX-Klammerung, damit er beim Nachladen mitkommt:
Wegweiser: PLZ-Assistent

Verwandte Themen