Magento ändern Sie den Wert für die benutzerdefinierte Option, bevor Sie ihn in den Warenkorb legen

7

Ich habe eine benutzerdefinierte Option für mein Produkt in Magento als Dropdown-Menü eingerichtet, d. h.

Größe: Klein, Mittel, Groß

Auf der Produktseite zeige ich zusätzliche Informationen für jede Option mit Javascript.

Klein - Taille 30, Brust 36, Länge 42 ...
Mittel - Taille 32, Brust 38, Länge 44 ...
Groß - Taille 34, Brust 40, Länge 48 ...

Wenn ich ein Produkt zum Warenkorb hinzufüge, erhalte ich den Größentitel (Klein, Mittel oder Groß) im Warenkorb, aber ich möchte auch diese zusätzlichen Informationen anzeigen (Taille 30, Brust 36, Länge 42 ...) und es mit speichern lassen Auftrag.

Was ist der beste Weg, es zu tun? Vielen Dank im Voraus.

    
Farrukh 17.02.2012, 19:24
quelle

3 Antworten

28

Die benutzerdefinierten Optionen werden nur im Angebot als Options-IDs und -Werte gespeichert. Jedes Mal, wenn die Optionen gerendert werden, werden sie grundsätzlich von der Datenbank neu geladen Wenn Sie die Werte ändern, müssen Sie sie speichern, und das würde sie für alle festlegen.

Das heißt, ich arbeite das Problem an, indem ich eine zusätzliche benutzerdefinierte Option mit dem geänderten Wert im laufenden Betrieb hinzufüge und einen Ereignisbeobachter verwende. Dazu nutze ich zusätzliche Optionen.
Dann entferne ich die ursprüngliche benutzerdefinierte Option aus dem Zitatartikel.

Bis zu 1.4 Magento hat sich um den Rest gekümmert, aber seit dem müssen Sie die zusätzlichen Optionen manuell in die Auftragsposition kopieren und müssen auch darauf achten, dass sie erneut eingestellt wird, wenn ein Gegenstand neu geordnet wird.

Hier ist eine Beispielkonfiguration für Beobachter.

%Vor%

Der Rest wird in der Beobachterklasse behandelt.

%Vor%

Das ist es in aller Kürze. Fügen Sie Fehlerüberprüfungen hinzu und kümmern Sie sich um spezielle Fälle, wie das Hinzufügen des gleichen Produkts zum Warenkorb bei Bedarf.
Hoffe, dass Sie damit beginnen, mit benutzerdefinierten Produktoptionen zu arbeiten. Nicht schlecht, wenn du dich erst einmal mit ihnen vertraut gemacht hast.

    
Vinai 18.02.2012 21:41
quelle
0

Gehe zu Admin -> Catalog -> Attributes -> Manage Attributes . Suchen Sie Ihr Attribut in der Liste. In deinem Fall ist es wahrscheinlich size . Klicke darauf und gehe zu Manage Labels / Options . Von dort können Sie die zusätzlichen Informationen zu jedem Wert hinzufügen. Sie können das Label in "Klein - Taille 30, Brust 36, Länge 42" ändern und für jeden Attributwert, den Sie ändern möchten, wiederholen.

    
seanbreeden 17.02.2012 21:13
quelle
-1

Nur um eine kleine Lösung für Vinais großartige Lösung hinzuzufügen. Die Lösung durchbricht die Logik, einen Angebotsartikel nach Produkt zu erhalten.

Die Funktion getItemByProduct in Mage_Sales_Model_Quote_Item ruft die Funktion representProduct auf, die zwischen den Angebots- und Produktoptionen vergleicht. Wenn beide Objekte eine identische Liste von Optionen haben, wird das Zitatobjekt andernfalls falsch zurückgegeben.

Da beide Objekte unterschiedliche Optionen haben, nachdem wir unsere benutzerdefinierte Option hinzugefügt haben, gibt die Funktion false zurück.

Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Klasse Mage_Sales_Model_Quote_Item neu zu schreiben und fügen Sie den benutzerdefinierten Optionscode der lokalen Variablen $ _notRepresentOptions im Konstruktor hinzu.

%Vor%

}

    
Itay Raz 22.05.2014 23:00
quelle

Tags und Links