Konfigurowalne produkty i zestaw atrybutów


18

TL; DR : Czy jest jakiś powód, dla którego proste produkty powiązane z produktem konfigurowalnym muszą mieć ten sam zestaw atrybutów, co sam produkt konfigurowalny? Mam na myśli, czy jest jakiś powód techniczny ? Znam przyczynę „zdrowego rozsądku”. Jeśli sprzedajesz parę butów, wszystkie wersje w zależności od koloru i rozmiaru muszą być również butami .
Wersja długa : miałem za zadanie „scalić” niektóre konfigurowalne produkty. Mam na myśli z 2 lub więcej, aby zrobić tylko jeden. Nie chciałem robić ich ręcznie ze względu na ilość produktów i nie chciałem przejść$product->load(..)->set...()->save()ze względu na czas potrzebny na uruchomienie skryptu. W ten sposób zwarłem proces, ponieważ byłem pewien, że żaden z prostych produktów się nie pokrywa. Było unikalne połączenie wielkości i koloru. Ja to zrobiłem:

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

gdzie $simpleProductIdsjest tablica wszystkich prostych identyfikatorów produktów powiązanych z konfigurowalnymi produktami, które należy scalić.
Działa to doskonale dla większości produktów, ale było kilka, które mają problemy.
Gdybym zadzwonił

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

Otrzymałbym wszystkie proste identyfikatory produktów, ale w backendie pojawiło się tylko kilka z nich. Po pewnym czasie kopania odkryłem, że jedynymi, które zostały pokazane, były te z tym samym zestawem atrybutów, co produkt konfigurowalny. Drugi zestaw atrybutów jest bardzo podobny do pierwszego, tylko kilka drobnych różnic, ale zawiera konfigurowalne atrybuty (rozmiar i kolor).
A teraz dziwna rzecz. W interfejsie spodziewałem się zobaczyć wszystkie produkty ($ productIds w powyższym kodzie) lub tylko produkty z tego samego zestawu atrybutów. Cóż, było coś pomiędzy.

  • 20 powiązanych identyfikatorów produktów - 5 rozmiarów, 4 kolory
  • 10 powiązanych produktów w zapleczu - 5 rozmiarów, 2 kolory - pozostałe 2 kolory (10 produktów) miały inny zestaw atrybutów
  • 15 kombinacji w interfejsie - 5 rozmiarów 3 kolory (???)

Udało mi się rozwiązać problem, zmieniając zestaw atrybutów dla produktów, które nie pojawiły się, ale nadal jestem zdziwiony.

Uwaga : nie próbuj tego w domu. Możesz też wypróbować go w domu, ale nie na serwerze na żywo.

Odpowiedzi:


13

Po zapytaniu o to są powody, dla których mam. Mam nadzieję, że będzie to dla Ciebie satysfakcjonujące, chociaż prawdopodobnie jest to, czego się spodziewałeś.

  1. Interfejs adminhtml został stworzony z myślą o utrudnieniu kupcom całkowitego popsucia się.

Z tego powodu wiele funkcji udostępnianych przez Magento jako Framework nie jest możliwe poprzez interfejs użytkownika.
Powodem, dla którego można wybierać tylko produkty z tego samego zestawu atrybutów jako powiązane produkty proste dla produktów konfigurowalnych, jest to, co było w specyfikacjach.
Jak powiedziałeś, ma to sens.

  1. Innym powodem jest myślenie o zestawach atrybutów. Jednym z powodów, dla których istnieją, jest zmniejszenie liczby atrybutów i opcji, które należy załadować i przetworzyć podczas żądania. Zastosowanie tego sposobu myślenia do konfigurowalnych ma sens, ponieważ jest to stosunkowo drogi typ produktu kosztowny pod względem zasobów.

Ponieważ backend został zbudowany w ten sposób, nigdy nie oczekiwano, że logika frontonu dla konfigurowalnego będzie obsługiwać proste produkty z różnych zestawów atrybutów.
Właśnie dlatego ograniczenia nie są tam w pełni wdrożone.

Prawdopodobnie łatwo byłoby skonfigurować konfigurowalne elementy do pracy z podobnymi zestawami atrybutów. Po prostu nie było tak przeznaczone.

Nie pytałem dalej i nie szukałem siebie, aby zobaczyć, która interakcja kodu dokładnie wywołała dziwny wynik na interfejsie. Prawdopodobnie nie jest to ważne, ponieważ jeśli dobrze zrozumiałem, to pytanie o uzasadnienie decyzji o wykluczeniu prostych produktów z zestawów atrybutów innych niż konfigurowalne, a nie wyjaśnienie kodu.


Dzięki Vinai. Miałem nadzieję głęboko w umyśle z powodu „oszałamiającego” powodu. Byłoby fajnie :). To jest satysfakcjonujące wyjaśnienie. Jeśli chodzi o „dziwny wynik”, nie ma potrzeby kopania kodu. Zrobię to, kiedy się nudzę. Nadal mam zrzut DB i sposób na odtworzenie tego samego wyniku. Najprawdopodobniej dlatego, że wkręcałem bezpośrednio w bazę danych. Wyślę wynik, gdy / jeśli go znajdę.
Marius

2
Tsk tsk, @Marius - nie dotykaj db;)
philwinkle

4
@philwinkle. Wiem, wiem, wszechświat eksploduje, jeśli to zrobi. Co mogę powiedzieć? Lubię żyć niebezpiecznie. W mojej obronie powiedziałem „nie próbuj tego na serwerze na żywo”.
Marius

1
Wciąż czekam, aż mój umysł się rozwali ... :)
Vinai

2

Używamy rozszerzenia o nazwie RapidFlow firmy Unirgy (którego nie mogę wystarczająco polecić) do importu i eksportu. Jedna z funkcji wersji Pro umożliwia zmianę zestawów atrybutów. Kolejnym jest tworzenie produktów poprzez import CSV. Czasami tworzymy nowe proste produkty do konfiguracji, a czasem przez przypadek te proste produkty mają inne zestawy atrybutów niż ich rodzice.

Rapidflow z przyjemnością zaimportuje te produkty i zmieni zestawy atrybutów. Nie jesteśmy zadowoleni z wyników. Konfigurowalne produkty, które są skonfigurowane za pomocą atrybutów poza ich zestawem atrybutów, nie są renderowane przez administratora produktu i muszą zostać naprawione. Jeśli nie zmienimy zestawu atrybutów rodzica, jak zauważyłeś, dzieci po prostu nie zostaną poprawnie powiązane z rodzicem. Istnieją jako encje Magento, mogą być edytowane, ale nie pojawią się jako dzieci na stronie produktu lub na powiązanej liście produktów konfigurowalnego rodzica.

Z czysto technicznego punktu widzenia proste produkty mogą mieć inny zestaw atrybutów niż ich elementy nadrzędne. Ale ponieważ takie zachowanie nie jest obsługiwane, nawet w EE, a więc Razor Razam mówi, że podczas projektowania Magento twórcy Varien nie widzieli takiej potrzeby.


1
Dziękuję za odpowiedź (i zalecenie rozszerzenia), ale to nie odpowiada na moje pytanie. Powiedziałem, że udało mi się rozwiązać problem, zmieniając bazę danych bezpośrednio. Wiem, że nie powinienem tego robić, ale miałem dobrą wiedzę o tym, co robiłem - i kopię zapasową bazy danych :). Byłem ciekawy, dlaczego takie ograniczenie istnieje. O ile „Varien Devs nie widział potrzeby”, mam wrażenie, że się mylisz. Jeśli wprowadzisz ograniczenie, musi to być jego uzasadnienie.
Marius
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.