No Account Creation - Bestellung ohne Benuzteranmeldung

Für den Webshop marks-normalien.de sollte VirtueMart im Modus laufen, bei dem es nicht notwendig ist, sich als Benutzer anmelden zu müssen um eine Bestellung ausführen zu können. Dazu muss in der Komponente VirtueMart > Administration > Konfiguration > Reiter "Global" > Gruppe "Einstellungen zur Nutzerregistrierung" > User Registration Type > "No Account Creation" ausgewählt werden.

 

Fehlerhaftes Ajax-Verhalten

Allerdings tritt bei diesem Modus dann im Frontend ein kleines Problem auf. Wenn ein Produkt aufgerufen wird, welches sehr viele Artikel enthält, dann dauert das Laden der Seite entspr. lange. Sobald die Pulldownlist für die Artikel angezeigt wird, kann der User dort auswählen. Wurde der Artikel ausgewählt werden (durch Ajax) Inhalte auf dieser Produktseite akualisiert. Das dauert jedoch bei größeren Datenmengen etwas. Ist der User in dieser Zeit aber schneller und klickt schnell nach der Auswahl des Artikels auf den "Bestellen"-Button kommt es regelmäßig dazu dass das Einfügen dieses Artikels in den Warenkorb nicht sauber funktioniert. Offensichtlich gelingt hier das Schreiben der Daten in den Warenkorb nicht richtig, weil noch nicht alle Daten auf der Seiten geladen wurde. Das ist auch rein visuell festzustellen, weil Sekunden nach der Artikelauswahl und dem Bestellbutton-Klick noch Inhalte wie die Verfügbarkeit und Lieferzeiten für diesen Artikel erscheinen. Wird aber vor dieser "verspäteten" Anzeige der Bestellbutton geklickt, kommt es zu dem hier beschriebenen Fehlverhalten.

Das Fehlverhalten äußert sich darin, dass manchmal Artikel gar nicht hinzugefügt werden oder sogar Artikel verschwinden.

Bisher konnte ich nur eine Möglichkeit finden - ohne intensiv in die Quellen eingreifen zu müssen, um diesem Problem aus den Weg zu gehen. Das war das Abschalten von Ajax in diesem Template.



Die Abschaltung von Ajax

ist jedoch nicht über die VirtueMart-Konfiguration möglich, sondern muss für das jeweils genutzt VM-Template vorgenommen werden. Dazu sollte man in ~/components/com_virtuemart/themes/default (oder statt default das jeweils genutzte Templateverzeichnis öffnen. Dort liegt eine theme.config.php. Diese mit einem Editor öffnen und in der Parameterzeile useAjaxCartAction=1 auf =0 ändern. Damit wird Ajax abgeschalten.

Der Nachteil des Abschaltens von Ajax ist natürlich eine Komfort-Verlust. D.h.: Mit Ajax bleibt der User nach Klick auf den Bestellbutton auf der Produkt-Detail-Seite und könnte hier sofort den nächsten Artikel auswählen. Der vorher ausgewählte Artikel wird per Ajax in den Warenkorb geschrieben und die anzeigenden Seitenelemente (Modul virtuemart > Warenkorb) wird mit seiner Ausgabe "X Produkte Preis" aktualisiert. Nach Abschalten von Ajax werden 1. o.g. Zusatzinfos wie Verfügbarkeit und Lieferzeit nicht mehr nach Auswahl des Artikels angezeigt und 2. nach dem Bestell-Button-Klick der Warenkorb als in der vollständigen und aktualisierten Darstellung angezeigt. Der User muss sich also von hier neu beginnend wieder zum Produkt durchhangeln um evtl. auf der selben Produkt-Detailseite mit dem nächsten Artikel fortzusetzen.