Was ist die richtige Vorgehensweise - anstatt das Produkt zu löschen und erneut zu beginnen, Attribute zu vorhandenen konfigurierbaren Produkten hinzuzufügen oder zu entfernen.
Beim Erstellen eines konfigurierbaren Produkts werden Sie aufgefordert, die für das Produkt zu verwendenden Attribute auszuwählen.
Ich habe viele Produkte, für die ich jetzt einige Attribute entfernen muss, die ursprünglich ausgewählt wurden, und einige, für die auch ein Attribut hinzugefügt werden muss, das ursprünglich nicht ausgewählt wurde.
Jede Hilfe dabei ist erwünscht - da das Löschen der Produkte nicht der beste Ansatz dafür ist. Zumal viele andere Dinge mit den Produkten verbunden sind.
Antworten:
Hier ist, wofür ich arbeiten muss, um ein Attribut aus dem konfigurierbaren Produkt zu entfernen.
Das ist das Szenario.
Alle konfigurierbaren Produkte wurden falsch mit dem Attribut
brand
als konfigurierbares Attribut für ungefähr 50 konfigurierbare Produkte mit ungefähr 200 einfachen zugeordneten Produkten erstellt.Alle einfachen Produkte, die einem konfigurierbaren Attribut zugeordnet sind, haben dieselbe Marke. Die Idee ist,
brand
aus konfigurierbaren Attributen zu entfernen und sie als einfaches Attribut dem konfigurierbaren Produkt mit dem Wert eines der einfachen Produkte zuzuweisen.Hier ist der Code, der dies tut. Der Code wird nur einmal ausgeführt. Es kann in einem Upgrade-Skript oder einer einfachen PHP-Datei hinzugefügt werden.
Bei den oben aufgeführten Nummern dauerte die Ausführung auf meinem lokalen Computer (kein leistungsstarker Computer) ungefähr 15 Sekunden. Ich bin sicher, dass dies optimiert werden kann. Höchstwahrscheinlich besteht keine Notwendigkeit, alle einfachen Produkte eines konfigurierbaren Produkts zu erhalten, um den
brand
Wert zu erhalten, aber ich habe mich nicht darum gekümmert.quelle
catalog_product_super_attribute
funktioniert das? Oder muss ich andere Tabellen ändern? Wie in stackoverflow.com/a/13381381/1749007Dies erfordert eine direkte Bearbeitung der Datenbank, und das erste Gesetz von Magento lautet , die Datenbank nicht direkt zu bearbeiten .
Aber wenn Sie verrückt genug sind, um fortzufahren, wurde dies vor ein paar Monaten auf StackOverflow behandelt:
Produkte. Ich habe den folgenden DB-Workaround-Hack auf CE 1.6.2 getestet und er scheint zu funktionieren:
Credit: /programming/5658197/add-new-attribute-to-existing-configurable-product-magento
Ungetestet - YMMV.
quelle
Um ein Superproduktattribut (wie sie genannt werden) aus allen konfigurierbaren Produkten zu entfernen, können Sie diese SQL-Abfrage in der Datenbank ausführen:
Hier ist die ID des Attributs in der Tabelle eav_attribute in Bezug auf attribute_code gespeichert. Die Tabelle catalog_product_super_attribute verknüpft Produkte mit Super-Produktattributen. Sie können Attribute hinzufügen und entfernen, um dort konfigurierbare Produkte zu erstellen.
quelle
DELETE FROM catalog_product_super_attribute WHERE attribute_id = <attribute_id> AND product_id = <product_id>;
Es gibt einen fehlerhaften Hack, um ein konfigurierbares Produkt zu öffnen und dann ein Duplikat auszuwählen. Wählen Sie das alte und das neue Attribut aus. Das Duplizieren erfolgt ohne SKU. Löschen Sie dann das ursprüngliche konfigurierbare Produkt und die einfachen Produkte. Danach können Sie dieselbe SKU zum Duplizieren geben. Dann müssen Sie nur noch neue einfache Produkte herstellen.
Es ist eine schnelle Umgehung, wenn es nicht so viele einfache Produkte gibt.
quelle
Ich habe es gerade geschafft, dies mit dem kostenlosen Magmi-Import-Export-Tool im Aktualisierungsmodus sauberer zu machen. (verständliche Version)
Exportieren Sie Schlüsselfelder, ändern Sie die Spalteneinstellungen von configure_attributes, um konfigurierbare Attribute in einfachem und konfigurierbarem SKUS anzugeben, und importieren Sie sie dann erneut mit Magmi
Als ehemaliger Oracle Consultant würde ich zustimmen, dass Sie sich nicht mit der Datenbank herumschlagen sollten, insbesondere nicht mit einer so komplexen wie der Magento-Datenstruktur. Verwenden Sie dazu besser ein Tool, das bereits ausführlich getestet wurde.
quelle
Ich musste ein Attribut als eines der "konfigurierbaren" Attribute für ein konfigurierbares Produkt entfernen.
Die obigen Verweise auf catalog_product_super_attribute waren korrekt. Mit dem Navicat-Datenbank-Tool habe ich nacheinander einige Dinge erledigt.
Zu Testzwecken Geändert die Attribute_Id, die es in ein anderes Feld geändert hat, das in anderen Produkten verwendet wird. (Bestätigt, dass es sich um den fraglichen Datensatz handelt). Notieren Sie sich für alle Fälle den vollständigen Datensatz (product_super_attribute_id, product_id, attribute_id, position).
Schließlich löschte der Datensatz alle zusammen.
Das hat den Trick gemacht. Ich habe auch notiert, was ich getan habe, vorausgesetzt, ich müsste das noch einmal tun.
Nochmals: Das Löschen des Datensatzes in "catalog_product_super_attribute" löste mein Problem, das mit anderen oben in Verbindung zu stehen schien.
Zusätzliche Informationen: Um "attribute_id" mit der richtigen benannten Liste zu korrelieren, ist es wichtig, Folgendes zu beachten: catalog_super_attribute_label -> und über product_super_attribute_id zu korrelieren.
Ich habe nach einem verwandten "attribute_id" -Feld gesucht (noch nicht gefunden).
"product_super_attribute_id" macht den Trick, um Ihnen zu sagen, was die "attribute_id" eigentlich ist. (Ich möchte immer noch den "Standard" -Datensatz für "attribute_id" finden, um zu sehen, wie ein Attribut zuerst in der Datenbank definiert wird.)
quelle