Bugfix: Magento Configurable Swatches

Seit der Version 1.9.1.0 ist das Magento RWD Theme um praktische Configurable Swatches erweitert: kleine Schalter, mit denen auf Produktseiten ohne umständliches Dropdown-Gehangel ganz einfach zwischen den unterschiedlichen Varianten und Attribut-Kombinationen hin- und hergeschaltet werden kann, wobei sich das angezeigte Produktbild entsprechend ändert. Normalerweise.

Configurable Swatches at work

Hier funktioniert alles, wie es soll.

Das Problem: Keine Änderung des Produktbilds

Leider tritt hierbei in der Praxis immer wieder ein Fehler auf. Aber eben nur manchmal – und dann geht das Umschalten doch wieder? Wir haben den Bug hier mal eingefangen. Normalerweise ändert sich das Produktbild beim Wechseln der Farbe über die Swatches (wie oben). Es gibt aber Fälle, in denen sich (in unserem Beispiel) nach der Auswahl einer Größe beim Umschalten der Farbe das Produktbild unverändert bleibt.

Configurable Swatches Bug

Und hier ist das Produktbild eingefroren.

Die Ursache: Unsauber kopierter Code

Warum funktioniert das manchmal nicht – und manchmal doch? Schaut man sich den Code dazu an, wird die Sache allmählich klar. Beim Betätigen der Swatches wird der Schnitt aus zwei Arrays, in unserem Beispiel den passenden Produkt-IDs für die Farbe und den Produkt-IDs für die Größe gebildet. Hier im Screenshot ist links die Methode arrayIntersect dargestellt, auf der rechten Seite sind die Listen a und b zu sehen:

Configurable Swatches Code

Der Code für diese Methode stammt direkt von Stackoverflow und entspricht bis in den Kommentar in Zeile 39 dem Original. Allerdings findet sich dort zehn Zeilen weiter oben ein etwas ausführlicherer Kommentar, dessen Inhalt beim Kopieren der Methode für das Vergleichen der Arrays nicht beachtet wurde:

Stackoverflow: Quelle für Configurable Swatches Code

Die Listen müssen sortiert sein, bevor sie im Hinblick auf eine Schnittmenge miteinander verglichen werden. Das wurde im Code für die Configurable Swatches nicht beachtet. Und die zufällige Reihenfolge der Elemente der Listen führt im Frontend dazu, dass das Umschalten des Produktbilds mal funktioniert – und mal nicht.

Die Lösung: Produkt-IDs sortieren lassen

Wie so oft ist der eigentliche Fix dann schnell und einfach zu haben: Man muss vor jedem Aufruf von arrayIntersect sicherstellen, dass die Liste sortiert ist. Wir haben das so gelöst:

Bugfix Configurable Swatches

Hier gibt es den Patch als Gist bei GitHub.

Dieser Beitrag wurde am von veröffentlicht/zuletzt bearbeitet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

× 3 = 12