[B]Edit: Bitte Thread ins DE-Forum verschieben, habs verpeilt.[/B]
Hallo zusammen,
eine Verständnisfrage, welche mich nun bereits seit 2 Tagen beschäftigt, und deren Lösung sich mir verschließt:
Ich lasse mir in der oxarticle einen var_dump ausgeben, um zu sehen, an welchen Stellen überall die Funktion getPrice aufgerufen wird.
Dabei ist mir in der Listenansicht aufgefallen (?cl=alist&cnid=musterkat.), dass getPrice() bereits vor dem <html>-Tag ein paar mal durchlaufen wird.
Die alist.php ruft in der render()-Funktion $this->getArticleList(); auf. Verfolgt man diese Kette weiter, landet man irgendwann in der selectString()-Funktion von oxarticlelist, welche wiederum auf die selectString von oxlist zurückgreift.
Irgendwo dazwischen passiert aber noch der Aufruf von Oxarticle::getPrice(). Ich finde den entsprechenden Aufruf innerhalb von diesem Ablauf einfach nicht:
string(53) "oxarticlelist loadCategoryArticles selectString start"
oxPrice Object
(
[_dBrutto:protected] => preisA
[_dNetto:protected] =>
[_dVat:protected] =>
[_blNetPriceMode:protected] =>
)
oxPrice Object
(
[_dBrutto:protected] => normalpreis
[_dNetto:protected] =>
[_dVat:protected] =>
[_blNetPriceMode:protected] =>
)
string(51) “oxarticlelist loadCategoryArticles selectString end”
Meine Fragen dazu: Wo passiert der Aufruf? Wieso 2x pro Artikel, wiese 2x mit unterschiedlichen Preisen? Wieso greift nach der ersten Berechnung der Cache in getPrice nicht?
Weiterführend:
Der Aufruf von getPrice passiert bei mir pro angezeigtem Artikel 2x, eingeloggt als Benutzer der Benutzergruppe PreisA berechnet mir getPrice() das erste mal korrekt den PreisA, beim zweiten mal allerdings nicht. Erst diese zweite Berechnung landet (komischerweise) im “Cache” von oxarticle (if-Abfrage in der Funktion getPrice()). Dies führt wiederum dazu, dass der Aufruf von getFPrice() im Template listitem_grid.tpl die gecachte Version ausliefert, welche falsch ist, da es sich nicht mehr um PreisA handelt.
In der Detailansicht passiert der Aufruf für den Artikel korrekterweise nur einmal, mit dem richtigen Preis.