Virtuemart Fallstrick: das Default Land

Von einer eigenartigen Virtuemart Stolperfalle muss ich  kurz berichten, denn es ist eine, in die jeder stolpern kann - und es ist eine, die sich seltsamerweise durch mehrere Effekte bemerkbar macht, die man zunächst nicht mit der Angelegenheit in Verbindung oder gar in Zusammenhang bringt (auch wenn man als der “Debugger” vor dem Rechner immer doch irgendwie auf Zusammenhänge und das “sich in Wohlgefallen auflösen” hofft…)

Ich kannte das Problem bzw. die Konstellation nicht, da ich bisher immer Shops mit Benutzerregistrierung durchgespielt oder realisiert habe.

Das Szenario eines Shops, der bereits eingerichtet war, als ich den ersten Blick drauf werfen konnte, war folgendes:

  • Bestellung ohne Benutzerregistrierung
  • Versand nur innerhalb Deutschlands mit Standard Shipping Modul
  • eine Versandmethode
  • gestaffelte Versandkosten nach Gewicht

Die Schritte, die der Kunde im Warenkorb bei Klick auf Bestellung zu tätigen hat, reduzieren sich auf einen Schritt: die Eingabe seiner Adressdaten und der Emailadresse. Der nächste Schritt zum Checkout in diesem Fall ein auf eine Seite zusammengefasster Bestellvorgang. Dort wurde die Rechnungsadresse nicht angezeigt.

Durch Debuggen stellte sich außerdem heraus, dass Virtuemart keine Versandmethode finden konnte, die mit der angegebenen Postleitzahl zusammenpasst. (Virtuemart Nutzer wissen: im Standard Shipping Modul sind Postleitzahlen von 00000 bis 99999 Standard - sollte also kein Problem sein). Zwei scheinbar unabhängige Fehler, die aber in einem Default ihren Ursprung haben.

Dies zu finden half der Virtuemart interne Debugger - denn er spuckt die interessante Information aus: Der nicht registrierte User befindet sich in den USA. Die Benutzerinformationen Land und Staat waren aufgrund Überflüssigkeit in der Konfigurationsdatei deaktiviert worden.

Ein Blick in die Datenbank oder in die Installationsroutine hilft:
CREATE TABLE IF NOT EXISTS `jos_vm_user_info` (
`user_info_id` varchar(32) NOT NULL default '',
`user_id` int(11) NOT NULL default '0',
`address_type` char(2) default NULL,
`address_type_name` varchar(32) default NULL,
[.....]
`country` varchar(32) NOT NULL default ‘US’,
[.....]
PRIMARY KEY  (`user_info_id`),
KEY `idx_user_info_user_id` (`user_id`)
) TYPE=MyISAM COMMENT=’Customer Information, BT = BillTo and ST = ShipTo’;

Hier liegt das Problem und hier liegt auch die Lösung: es bleibt nichts anderes als in der Datenbank den Default “US” auf “DE” zu setzen. Ab sofort werden alle neu angelegten Adressen in Deutschland lokalisiert. So findet dann auch die Shipping Routine eine passende Postleitzahl zur nur in Deutschland gültig definierten Versandroutine. Und damit klappt dann schließlich auch der reibungslose Checkout durch den Kunden und dem Einkaufserlebnis sind zumindest an dieser Stelle keine Grenzen gesetzt.

Es bleibt eine grundsätzliche Überlegung zum Umgang mit Shops in dieser Konstellation. Es kann theoretisch ja passieren, dass sich Österreicher und Schweizer auf die Seite verirren und bestellen. Ob denen auffällt, dass sie ihr Land nicht eingeben können, ist fraglich und ob ein Hinweis der Art “wir versenden nur nach Deutschland” wirklich gelesen wird, ebenso.

Das gelöste Problem hinterlässt also im Anschluss durchaus Fragen - die mich als Entwickler, der schon so einige Shops realisiert hat, nicht wirklich glücklich machen und daher geklärt werden müssen….

 

7 Antworten zum Beitrag “Virtuemart Fallstrick: das Default Land”

  1. am 06 Aug 09 um 09:09 meint

    Hallo! Ja, das ist ein kleines Problem von Virtuemart (im Moment). Es besteht in der Länderliste nicht die Möglichkeit Länder zu deaktivieren oder als default zu markieren. Daher ist es leider momentan nicht ratsam, die Länderauswahl zu deaktivieren. Einziger Workaround, der im Moment hilft: Länderliste bereinigen, so dass nur die benötigten oder nur eines übrig bleibt.

  2. am 06 Aug 09 um 15:51 meint

    Anne-Kathrin

    Alles klar, danke für die fundierte Antwort.
    Andererseits verstehe ich da natürlich auch den Kundenwunsch.
    In einem deutschen Shop ,der nur nach D versendet, ist die Angabe “Germany” ziemlich überflüssig.
    Interessant fand ich vor allem, welche Blasen das zieht und welche Effekte sich da zeigen.

  3. am 02 Nov 09 um 14:49 meint

    Letizia

    Hmm, ok…Ich bin genau bei diesem Problem angelangt. Bin Anfänger, wo finde ich diese Datenbank? Wäre euch sehr dankbar, wenn ihr mir das verständlich erklären könntet…..

    Danke und schönen Tag noch…

  4. am 11 Jan 10 um 23:08 meint

    Patrick

    Danke!!! Hat mir gerade den Abend gerettet.

  5. am 17 Nov 10 um 17:28 meint

    ich habe mir das aufwahlfeld auf “germany” bei der anmeldung voreingestellt da ich es ziehmlich doof finde dass die kunden eine englische länderbezeichnung auswählen müssen.
    funktioniert auch ganz gut. zusätzlich könnte man das entsprechende feld auch noch “hidden” machen…???

  6. am 07 Sep 11 um 22:01 meint

    Also da ich auch nur innerhalb Deutschlands verschicke, hab ichs so gemacht:

    Bei den Nutzerfeldern die Länderauswahl komplett aussetzen, also weder sichtbar noch Pflichtfeld.
    Dann habe ich ein neues Nutzerfeld erstellet, und zwar eine Checkbox mit dem Titel “Wohnhaft in Deutschland?” oder eben so ähnlich. Die macht man dann zum Pflichtfeld. Daneben habe ich einen Info-Button gesetzt, über den man dann erfährt, dass wir nur innerhalb Deutschlands versenden. Dann kann der neue Kunde die Tatsache, dass er in Deutschland wohnen muss, wenigstens nicht mehr übersehen, da er sich ohne Häkchen setzten nicht registrieren kann!

  7. am 09 Feb 12 um 17:29 meint

    Martina

    Hallo,

    ich habe auch ein Problem mit virtuemart. Wenn man als Kunde die Lieferadresse ändern will so kann man es nicht speichern - der button dafür macht gar nichts!!! Gibt es eine Erklärung?
    Danke für die Antwort - diverse Foren konnten mir nicht helfen-

Auch was dazu sagen?