Konfigurierbare Produkte und Attributsätze

18

TL; DR : Gibt es einen Grund, warum die einfachen Produkte, die einem konfigurierbaren Produkt zugeordnet sind, denselben Attributsatz haben müssen wie das konfigurierbare Produkt selbst? Ich meine, gibt es einen technischen Grund? Ich kenne den "gesunden Menschenverstand" Grund. Wenn Sie ein Paar Schuhe verkaufen, müssen alle Versionen, die von Farbe und Größe abhängen, auch Schuhe sein .
Lange Version : Ich hatte die Aufgabe, einige konfigurierbare Produkte "zusammenzuführen". Ich meine von 2 oder mehr nur einen zu machen. Ich wollte sie wegen der Menge der Produkte nicht manuell machen und ich wollte nicht durchgehen$product->load(..)->set...()->save()Aufgrund der Zeit, die zum Ausführen des Skripts benötigt wurde. Also habe ich den Prozess kurzgeschlossen, weil ich mir sicher war, dass sich keines der einfachen Produkte überlappte. Es gab eine einzigartige Kombination von Größe und Farbe. Ich tat dies:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

Dabei $simpleProductIdshandelt es sich um ein Array aller einfachen Produkt-IDs, die allen konfigurierbaren Produkten zugeordnet sind, die zusammengeführt werden müssen.
Dies funktionierte für die meisten Produkte perfekt, es gab jedoch einige Probleme.
Wenn ich anrufe

$productIds = $product->getTypeInstance()->getUsedProductIds() 

Ich würde alle einfachen Produkt-IDs erhalten, aber im Backend tauchten nur einige davon auf. Nachdem ich einige Zeit gebuddelt hatte, stellte ich fest, dass nur diejenigen angezeigt wurden, die dasselbe Attribut hatten wie das konfigurierbare Produkt. Der andere Attributsatz ist dem ersten sehr ähnlich, nur einige geringfügige Unterschiede, aber er enthält die konfigurierbaren Attribute (Größe und Farbe).
Und jetzt das Merkwürdige. Im Frontend habe ich erwartet, dass entweder alle Produkte ($ productIds im obigen Code) oder nur die Produkte im selben Attributsatz angezeigt werden. Nun, da war etwas dazwischen.

  • 20 zugehörige Produkt-IDs - 5 Größen, 4 Farben
  • 10 zugehörige Produkte im Backend - 5 Größen, 2 Farben - die anderen 2 Farben (10 Produkte) befanden sich in einem anderen Attributssatz
  • 15 Kombinationen im Frontend - 5 Größen, 3 Farben (???)

Ich konnte das Problem lösen, indem ich die Attributgruppe für die Produkte änderte, die nicht angezeigt wurden, aber ich bin immer noch verwirrt.

Hinweis : Versuchen Sie dies nicht zu Hause. Oder Sie können es zu Hause ausprobieren, aber nicht auf einem Live-Server.

Marius
quelle

Antworten:

13

Nachdem ich mich darum gekümmert habe, habe ich Gründe. Ich hoffe, es ist zufriedenstellend für Sie, auch wenn es wahrscheinlich das ist, was Sie erwartet haben.

  1. Das adminhtml-Interface wurde mit der Absicht erstellt, Händlern das völlige Durcheinander zu erschweren.

Aus diesem Grund sind viele Funktionen, die von Magento als Framework bereitgestellt werden, nicht über die Benutzeroberfläche möglich.
Der Grund, warum nur Produkte in demselben Attributsatz als zugehörige einfache Produkte für konfigurierbare Elemente ausgewählt werden können, liegt darin, dass dies in den Spezifikationen angegeben ist.
Wie Sie sagten, macht das irgendwie Sinn.

  1. Ein weiterer Grund ist das Überlegen des Zwecks von Attributmengen. Einer der Gründe dafür ist, dass weniger Attribute und Optionen während einer Anforderung geladen und verarbeitet werden müssen. Die Anwendung dieses Denkens auf konfigurierbare Elemente ist sinnvoll, da es sich um einen relativ ressourcenintensiven Produkttyp handelt.

Da das Backend so aufgebaut war, wurde von der Frontend-Logik für konfigurierbar nie erwartet, dass sie sich mit einfachen Produkten aus verschiedenen Attributmengen befasst.
Aus diesem Grund werden die Einschränkungen dort nicht vollständig implementiert.

Möglicherweise wäre es einfach, konfigurierbare Elemente mit Simples aus verschiedenen Attributgruppen zu kombinieren. Es war einfach nicht so gemeint.

Ich habe nicht weiter gefragt und habe nicht selbst nachgesehen, welche Code-Interaktion genau das seltsame Ergebnis auf dem Frontend hervorgebracht hat. Wahrscheinlich ist es nicht wichtig, da, wenn ich Sie richtig verstanden habe, Sie nach der Begründung für die Entscheidung gefragt haben, einfache Produkte aus Attributmengen auszuschließen, die sich von den konfigurierbaren unterscheiden, nicht von der Code-Erklärung.

Vinai
quelle
Vielen Dank, Vinai. Ich hoffte tief in meinem Kopf auf einen "umwerfenden" Grund. Es hätte Spaß gemacht :). Dies ist eine zufriedenstellende Erklärung. Was das "seltsame Ergebnis" betrifft, besteht keine Notwendigkeit, in den Code zu graben. Ich werde das tun, wenn mir langweilig wird. Ich habe immer noch den DB-Dump und die Möglichkeit, das gleiche Ergebnis zu reproduzieren. Höchstwahrscheinlich, weil ich direkt in die Datenbank geschraubt habe. Ich werde ein Ergebnis veröffentlichen, wenn ich eines finde.
Marius
2
Tsk tsk, @Marius - fass die db nicht an;)
philwinkle
4
@philwinkle. Ich weiß, ich weiß, das Universum wird explodieren, wenn Sie es tun. Was kann ich sagen? Ich lebe gern gefährlich. Zu meiner Verteidigung sagte ich: "Versuchen Sie dies nicht auf einem Live-Server."
Marius
1
Ich warte immer noch darauf, auch in den
Wahnsinn
2

Wir verwenden eine Erweiterung namens RapidFlow von Unirgy (die ich nicht genug empfehlen kann) für den Import und Export. Eine der Funktionen in der Pro-Version ermöglicht das Ändern von Attributmengen. Ein weiterer Grund ist die Erstellung von Produkten per CSV-Import. Gelegentlich erstellen wir neue einfache Produkte für konfigurierbare Elemente, und manchmal haben diese einfachen Produkte versehentlich andere Attributmengen als ihre Eltern.

Rapidflow importiert diese Produkte problemlos und ändert Attributgruppen. Mit den Ergebnissen sind wir in der Regel nicht zufrieden. Konfigurierbare Produkte, die durch Attribute außerhalb ihres Attributsatzes konfiguriert werden, können im Produktadministrator nicht gerendert werden und müssen repariert werden. Wenn wir die Attributgruppe des übergeordneten Elements nicht ändern, werden die untergeordneten Elemente, wie Sie bereits bemerkt haben, nicht ordnungsgemäß mit dem übergeordneten Element verknüpft. Sie sind als Magento-Entitäten vorhanden, können bearbeitet werden, werden jedoch nicht als untergeordnete Elemente auf der Front-End-Produktseite oder der zugehörigen Produktliste des konfigurierbaren übergeordneten Elements angezeigt.

Aus rein technischer Sicht ist es also möglich, dass sich einfache Produkte in einem anderen Attributssatz befinden als ihre übergeordneten Produkte. Da dieses Verhalten jedoch selbst in EE nicht unterstützt wird und Occam's Razor sagt, dass die Varien-Entwickler bei der Entwicklung von Magento die Notwendigkeit nicht erkannt haben.

RegularlyScheduledProgramming
quelle
1
Danke für die Antwort (und die Erweiterungsempfehlung), aber dies beantwortet meine Frage nicht. Ich sagte, dass ich es geschafft habe, mein Problem zu beheben, indem ich die Datenbank direkt änderte. Ich weiß, dass ich das nicht tun sollte, aber ich hatte ein gutes Wissen darüber, was ich tat - und eine Datenbanksicherung :). Ich war nur neugierig, warum diese Einschränkung besteht. Soweit "Varien-Entwickler die Notwendigkeit nicht erkannt haben", habe ich das Gefühl, dass Sie falsch liegen. Wenn Sie eine Einschränkung implementieren, muss dies ein Grund dafür sein.
Marius