Lege ich den Artikel in den Warenkorb wird im Warenkorb der richtige Preis angezeigt und man sieht wie im Hintergrund auch auf der Detailseite der korrekte Preis angezeigt wird:
der Beitrag wurde in “Administration” verschoben. Kann ich davon ausgehen, dass es sich um einen Konfigurationsfehler handelt?
Konfiguriert sind Rabatte für bestimmte Kategorien. Diesen Kategorien sind Artikel zugewiesen. Der Rabatt ist dann für manche Gruppen konfiguriert. Preis und UVP sind pro Artikel konfiguriert.
Da an manchen Stellen der Rabatt angezeigt wird dachte ich nicht an einen Konfigurationsfehler.
Ich habe eine Kategorie zugeordnet, damit überhaupt eine Kategorie zugeordnet ist. Könnte ein Konfigurations-/Admin-Problem sein, könnte aber auch am Template liegen.
Unter Umständen könnte ich mir sogar Vorstellen, dass es sich um einen Bug handelt. Versuch das doch bitte mal am Demoshop oder in einer jungfräulichen Installation nachzuvollziehen.
Da ich mich bei der Konfiguration des Demoshops 1:1 an unseren Shop gehalten habe gehe ich nicht von einem Administrationsproblem aus.
Das Theme mit den Templates ist ein von “Flow” geerbtes. An dieser Stelle habe ich meines Wissens nichts verändert dennoch würde ich es gerne überprüfen.
Welche Stelle wäre dafür relevant?
Viele Grüße
Chris
Hier noch die Konfiguration des Demo-Shops (bei uns analog):
Ist “&listtype=search&searchparam=…” Teil der URL ist $tprice->getBruttoPrice() > $price->getBruttoPrice(), sonst ist $tprice->getBruttoPrice() = $price->getBruttoPrice()
Eigentlich haben die beiden Dinge nichts gemein. Bei [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}] geht’s nur im die Einblendung der UVP bzw. das Hinzufügen von Klassennamen.
lautet der gesamte Block.
Hier springt er nur rein, wenn ich die oben genannten Parameter in der URL angebe.
Bei Ausgabe von
$price->getBruttoPrice
sehe ich dann eben, dass mit den URL Paramtern der Wert rabattiert ist und ohne die Parameter nicht.
Ggf. ist die eigentliche Ursache an anderer Stelle, aber das Ergebnis des Funktionsaufrufs zeigt, dass der Preis anders berechnet wird.
/**
* Performance issue. Sometimes you want to load articles without calculating
* correct discounts and prices etc.
*
* @var bool
*/
protected $_blLoadPrice = true;
Wenn ich “&listtype=search” eingebe führt er die Suche nochmal aus.
Wenn ich “&listtype=search” weglasse, führt er die Suche nicht aus → schneller
Wäre es dann nicht logischer bei einer ausgeführten Suche aus Performancegründen die Rabattberechnung wegzulassen?
Hier wird sie aber weggelassen, wenn ich die Suche nicht ausführe.
M.E. hat das nichts mit der Suche sondern eher was mit der Session zu tun, schau mal ob der Benutzer angemeldet ist wenn kein Rabatt erscheint. Vielleicht kannst du den Shop mal irgendwo online stellen damit man mal draufschauen kann, ansonsten ist das ein ziemliches Ratespiel.
In beiden Fällen ist der Benutzer angemeldet.
Hier Screenshots inkl. URL:
Aufruf des Artikels über die Kategorie: Honda Nice Motor -> Motorersatzteile -> E-1 Deckel Zylinderkopf.
In der Kategorieansicht wird der Rabatt angezeigt:
Der Shop ist eine Entwicklungsumgebung und es kann sein, dass zwischendurch etwas nicht funktioniert.
Grundsätzlich habe ich das Problem mit dem Testbenutzer so nachgestellt, dass es sichtbar wird, wenn man den Schritten in den Bildern folgt.
Die Anzeige und Berechnung erfolgt nur, wenn der Wert der o.a. Variable true ist. Nun würde ich mir den Wert zur Kontrolle ausgeben lassen. Ist er bei Deinem Problem false, musst die Ursache finden.
Das habe ich ebenfalls gemacht. Der Wert ist in beiden Fällen (Rabatt angezeigt oder Rabatt nicht angezeigt) “1”.
Zur Kontrolle habe ich die Funktion [{$oDetailsProduct->disablePriceLoad()}] eingebaut. Das hat aber nur zur Folge, dass gar kein Preis mehr angezeigt wird und der Inhalt der Variable “$_blLoadPrice” leer ist:
URL ohne “listtype”/ $_bloadprice=1 → kein Rabatt:
Dann würde ich den Quelltext untersuchen, ob die Angabe nur nicht sichtbar ist, also per CSS ausgeblendet bzw. überlagert wird. Da es ja auch bei Deiner anderen Frage um sowas geht, ist das vielleicht naheliegend.
Dann wäre aber doch die Ausgabe von " $price->getBruttoPrice" auch entsprechend korrekt.
Zugegeben: Bei der anderen Frage war ich nicht ganz auf der Höhe und hätte mir den Beitrag vermutlich schenken können.
Wie schon geschrieben wurde, ist das eine wilde Raterei…aber gut: zu Thema:
Obiges mag sein. Dann lass Dir beide Vergleichswerte ausgeben. Ist ein Wert von
Also ich lasse mir die beiden Werte ausgeben. Zuerst habe ich das einfach so ohne Prüfung in den Quelltext geschrieben und festgestellt, dass $tprice wohl nicht vorhanden ist, wenn der Rabatt nicht angezeigt wird:
Rufe ich das Produkt nochmal auf, wird initial wieder kein Rabatt angezeigt und $tprice ist nicht vorhanden. Gebe ich dann in der URL oben wieder “&listtype=search&searchparam=1234” ein, wird der Rabatt angezeigt und das Objekt ist vorhanden:
ich habe nun die Änderungen aus [Die Suche nach Performance] rückgängig gemacht. Das bedeutet: die Anpassungen in der search.php über das Modul (Modul gelöscht) und den Templates (zurück-Button, Anzeige “Artikel x von y”) zurück gebaut, so dass sie wieder mit dem originalen Flow übereinstimmen.
Die Anpassungen haben nur Probleme bereitet daher setze ich dort nun auf das Sphinx Modul, in der Hoffnung dass ich die Performance wie gewünscht erreiche.
Das Rabatt-Problem hat es leider nicht gelöst.
Könnt ihr mir kurz bestätigen, dass in der Kategorieansicht normalerweise kein “listtype” in der URL angezeigt wird. Ich habe leider keinen neu installierten Testshop mehr hier um zu vergleichen.
Final habe ich den SEO Parameter wieder auf “true” gestellt:
$this->blSeoMode = true;
Damit habe ich nun wie gewünscht die korrekte Rabattanzeige.
Dabei habe ich gemerkt dass es einen weiteren Fehler gab:
Wenn ein Artikel mehreren Kategorien zugeordnet war und man hat ihn aus der zweiten heraus aufgerufen gelangte man aus der Detailansicht mit Klick auf “Zur Übersicht” zur ersten Kategorie.
Ich weiß nicht wieso das alles auftritt. Ich scheine der einzige zu sein, bei dem das so war.
Danke trotzdem allen fürs Mitdenken.