cmsimple-xh / xhshop

A simple shop for CMSimple_XH
GNU General Public License v3.0
4 stars 3 forks source link

variant bug when page has several cartButtons #217

Closed manu37 closed 3 years ago

manu37 commented 4 years ago

Wenn mehrere Artikel einer Seite zugewiesen sind ("Bestellbutton anlegen auf.."), funktioniert die Variantenauswahl nur beim ersten Artikel. Bei den folgenden Artikel auf der Seite wird die Variantenauswahl ignoriert. Ich habe dort auf mehrere <section id="cartButton">. Sollte die Id nicht eindeutig sein?

manu37 commented 4 years ago

Ich bin ein bisschen weiter. Auf den Seiten "Bestellbutton anlegen auf.." werden Varianten angezeigt auch wenn es keine hat. Wo finde ich die Stelle, wo die Auflistung der Artikel passiert? Muss wohl irgendwo im FrontEndController sein.

cmb69 commented 4 years ago

Ich habe dort auf mehrere

. Sollte die Id nicht eindeutig sein?

Soweit ich es überblicke, sind mehrer Artikel auf der selben Seite (noch) nicht wirklich vorgesehen.

Auf den Seiten "Bestellbutton anlegen auf.." werden Varianten angezeigt auch wenn es keine hat.

Kann ich nicht reproduzieren.

Wo finde ich die Stelle, wo die Auflistung der Artikel passiert?

Meinst du FrontEndController::addToCartButton() (wird von index.php aufgerufen)?

manu37 commented 4 years ago

Wenn ich auf den Seiten "Bestellbutton anlegen auf.." mehrere Artikel habe, wird addToCart.tpl in $this->variants immer die Varianten des ersten Artikels angezeigt. Obwohl in https://github.com/cmsimple-xh/xhshop/blob/7dc4d6c36704423b87b44476145f71fad0d7d800/classes/FrontEndController.php#L70 $params['variants'] nicht gesetzt ist. Das soll mir doch mal ein Spezi erklären. Ich setze jetzt in addToCartButton() bei keinen Varianten die $params['variants'] als leerer array. Muss dann in addToCart.tpl mit count() abfragen.

cmb69 commented 4 years ago

Oh, dummer Bug. Wenn gerendert wird, werden die bereits im $viewProvider hinterlegten Parameter nicht zurückgesetzt. Um das zu ermöglichen, müsste Xhshop\View wohl eine ::resetParams() methode bekommen (und eigentlich wäre es wohl besser den $viewProvider immer wieder neu zu erzeugen; also eben nicht wieder zu verwenden).

cmb69 commented 4 years ago

Oh, noch etwas ekliger als gedacht, da wir dynamische Eigenschaften verwenden.

Und die Lösung für die mehrfache cartButton ID bedeutet natürlich einen (kleinen) BC-Bruch.