Jaka jest poprawna procedura - zamiast usuwania produktu i rozpoczynania od nowa dodawania lub usuwania atrybutów do istniejących produktów konfigurowalnych.
Podczas tworzenia konfigurowalnego produktu użytkownik jest proszony o wybranie atrybutów używanych dla produktu.
Mam wiele produktów, teraz muszę usunąć niektóre atrybuty, które zostały wybrane początkowo, a niektóre wymagają dodania atrybutów, które nie zostały początkowo wybrane.
Doceniamy wszelką pomoc - usunięcie produktów nie wydaje się najlepszym rozwiązaniem. Zwłaszcza, że z produktami wiąże się wiele innych rzeczy.
magento-1.7
products-management
configurable-product
jedenaście11
źródło
źródło
Odpowiedzi:
Oto, co dla mnie działają, aby usunąć atrybut z konfigurowalnego produktu.
To jest scenariusz.
Wszystkie konfigurowalne produkty zostały utworzone niepoprawnie z atrybutem
brand
jako konfigurowalnym atrybutem dla około 50 konfigurowalnych produktów posiadających około 200 prostych powiązanych produktów.Wszystkie proste produkty powiązane z konfigurowalnym atrybutem mają tę samą markę. Chodzi o to, aby usunąć
brand
z konfigurowalnych atrybutów i przypisać je jako prosty atrybut do konfigurowalnego produktu o wartości jednego z prostych produktów.Oto kod, który to robi. Kod jest uruchamiany tylko raz. Można go dodać w skrypcie aktualizacji lub prostym pliku php.
W przypadku liczb wymienionych powyżej uruchomienie na moim komputerze lokalnym (niezbyt mocnym) zajęło około 15 sekund. Jestem pewien, że można to zoptymalizować. Najprawdopodobniej nie ma potrzeby uzyskiwania wszystkich prostych produktów konfigurowalnego produktu, aby uzyskać
brand
wartość, ale nie zawracałem sobie tym głowy.źródło
catalog_product_super_attribute
będzie działać? A może muszę zmodyfikować inne tabele? Jak w stackoverflow.com/a/13381381/1749007Wymaga to bezpośredniej edycji bazy danych, a pierwszą zasadą Magento jest brak bezpośredniej edycji bazy danych .
Ale jeśli jesteś wystarczająco szalony, aby kontynuować, zostało to omówione na StackOverflow kilka miesięcy temu:
ucts. Przetestowałem poniższy hack obejścia DB na CE 1.6.2 i wydaje się, że działa:
Źródło: /programming/5658197/add-new-attribute-to-existing-configurable-product-magento
Nie przetestowane - YMMV.
źródło
Aby usunąć jeden atrybut super produktu (jak się je nazywa) ze wszystkich konfigurowalnych produktów, możesz wykonać zapytanie SQL w bazie danych:
Tutaj znajduje się identyfikator atrybutu przechowywany w tabeli eav_attribute dotyczący kodu atrybutu. Tabela catalog_product_super_attribute łączy produkty z atrybutami super produktu. Możesz dodawać i usuwać atrybuty, aby tworzyć konfigurowalne produkty.
źródło
DELETE FROM catalog_product_super_attribute WHERE attribute_id = <attribute_id> AND product_id = <product_id>;
Jest brudny hack, aby otworzyć konfigurowalny produkt, a następnie wybrać duplikat, wybrać stary i nowy atrybut, duplikat jest wykonywany bez SKU, a następnie usunąć oryginalny konfigurowalny produkt i proste produkty. Następnie możesz podać tę samą SKU do duplikowania. Musisz tylko stworzyć nowe proste produkty.
Jest to szybkie obejście, jeśli nie ma tylu prostych produktów.
źródło
Właśnie udało mi się to zrobić bardziej czysto za pomocą narzędzia do eksportu importu Free Magmi w trybie aktualizacji. (wersja zrozumienia)
Eksportuj pola kluczy, zmień ustawienia kolumny configurable_attributes, aby określić konfigurowalne atrybuty na prostym i konfigurowalnym SKUS, a następnie ponownie zaimportuj za pomocą Magmi
Jako były konsultant Oracle zgadzam się, aby nie zadzierać z bazą danych, szczególnie taką złożoną jak struktura danych Magento - lepiej użyć do tego celu dobrze przetestowanego narzędzia.
źródło
Musiałem usunąć atrybut, który jest jednym z atrybutów „konfigurowalnych” dla produktu konfigurowalnego.
Odniesienia powyżej dotyczące atrybutu katalog_produktu_supera były poprawne. Korzystając z narzędzia bazy danych Navicat, zrobiłem po kolei kilka rzeczy.
Do testowania zmieniono identyfikator atrybutu, który zmienił go na inne pole używane w innych produktach. (Potwierdził, że był to sporny zapis). Napisano w dół, na wszelki wypadek, pełny zestaw danych rekordu (id_produktu_supera, id_produktu, id_atrybutu, pozycja)
W końcu usunąłem rekord razem.
To załatwiło sprawę. Zanotowałem też to, co zrobiłem, zakładając, że będę musiał to zrobić ponownie.
Znowu: Usunięcie rekordu w „catalog_product_super_attribute” rozwiązało mój problem, który wydawał się związany z innymi powyżej.
Dodatkowe informacje: aby skorelować „identyfikator_atrybutu” z poprawną nazwaną listą, ważne jest, aby spojrzeć na: katalog_super_nazwa_atrybutów -> i skorelować poprzez identyfikator_supera_atrybutów.
Szukałem powiązanego pola „identyfikator_atrybutu” (jeszcze nie znalazłem).
„product_super_attribute_id” rozwiązuje problem, mówiąc ci, czym tak naprawdę jest „identyfikator_atrybutu”. (Chciałbym nadal znaleźć „domyślny” zestaw danych dla „id_atrybutu”, aby zobaczyć, jak atrybut jest najpierw zdefiniowany w bazie danych).
źródło