Am letzen Arbeitstag in diesem Jahr wollte ich noch ein wenig die Zeit tot-schlagen und etwas am Shop “basteln”.
Konkret:
Den Warenkorbhinweis “noch xxx € bis zum kostenlosen Versand” möchte ich auch in der OffCanvas-Cart einbauen. (mit einem Link auf eine Kat mit Preisfilter wenn Wert unter xx EUR)
Dazu verwendet wird die Variable: {$sShippingcostsDifference} sie funktioniert grundsätzlich auch… ABER:
Sie wird bei der “Ajax-Aktion in den Warenkorb legen” nicht aktualisiert, erst nach einem echten Seitenaufruf einem Aufruf der echten Cart wird diese Variable richtig gesetzt.
Ist das ein “BUG” oder ist das von “Shopware” einfach nur so gewollt / übersehen worden?
Nicht schön, wenn ich einen “Versandkostenfreien Artikel” in der Cart habe, ab noch XXX Eur bis zum “kostenfreien Versand” angezeigt werden.
WENN so eine Variable im Theme im Ajax-Template angeboten wird, sollte sie grundsätzlich auch den richtigen Wert haben. Dann lieber gar nicht die Variable ans Template übergeben, als einen falschen Wert
Hintergrund war bisher immer, dass der Off-Canvas noch keine Warenkorb-Berechnung durchführen soll, um so möglichst performant zu bleiben. Wenn jedes öffnen/schließen die Berechnung antriggert, ist das zusätzliche Performance.
Das Thema ist thematisch mit dem „Versandkosten im Warenkorb anzeigen“ verbunden. Das ist der gleiche grund, warum wir dort keine Versandkosten anzeigen. Der Off-Canvas ist so gebaut, dass er nur die Preise zusammenaddiert und keinen Warenkorb an sich berechnet.
Kein Problem, muss ich mir 2019 selber was basteln
Er muss es ja nicht bei jedem „öffnen“ berechnen, es reicht ja bei einer „Aktion“ wie „reinlegen oder löschen“ und dann in die Session schreiben - macht die echte Cart ja auch, oder wo kommt der Wert sonst später her? Egal - guck ich mir mal für ein kleines Plugin an.
Inder cartAction() werden vor dem Aufruf von getBasket() wesentlich mehr Class-Variablen initialisiert, als in der ajaxCartAction() - was dann wohl zu einer fehlenden / fehlerhaften Differenz-Berechnung führen dürfte.
Der “Autor” der ajaxCart wird sich ja etwas dabei gedacht haben, dass er u.A. sShippingcostsDifference ans Theme übergeben möchte, aber dann bitte richtige Werte
Aktuell ist mein Basteltrieb eher wieder ein wenig erloschen, aber wenn ich den “Hinweis” dann doch mal wieder ausprobieren möchte, werde ich wohl mal die checkout.php ein wenig patchen müssen
Diese Woche ist Büro noch auf Sparflamme, ein bischen Server hier updaten, dort ein wenig Gerätewartung etc.
Ehe ich mich mit einem Ticket in die Nesseln setze, muss ich mich noch weiter damit befassen und ggf. noch ein bischen gegen testen
Wenn ich mir 100% sicher bin, mache ich dann ein Ticket auf