TP; DR : Yapılandırılabilir bir ürünle ilişkili basit ürünlerin yapılandırılabilir ürünün kendisiyle aynı öznitelik kümesinde olması gerekmesinin bir nedeni var mı? Yani herhangi bir teknik sebep var mı? "Sağduyu" nedenini biliyorum. Bir çift ayakkabı satıyorsanız , renk ve boyuta bağlı olarak tüm versiyonlar da ayakkabı olmalıdır .
Uzun versiyon : Bazı yapılandırılabilir ürünleri "birleştirme" görevim vardı. Yani sadece bir tane yapmak için 2 veya daha fazla. Ürün miktarı nedeniyle bunları manuel olarak yapmak istemedim ve geçmek istemedim$product->load(..)->set...()->save()
çünkü senaryoyu çalıştırmak için geçen süre. Bu yüzden süreci kısa devre yaptım çünkü basit ürünlerin hiçbirinin üst üste gelmediğinden emindim. Benzersiz bir boyut ve renk kombinasyonu vardı. Bunu ben yaptım:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
burada $simpleProductIds
birleştirilmesi gereken yapılandırılabilir ürünlerle ilişkilendirilmiş tüm basit ürün kimlikleri dizisidir.
Bu, çoğu ürün için mükemmel çalıştı, ancak sorunları olan birkaç tane vardı.
Eğer ararsam
$productIds = $product->getTypeInstance()->getUsedProductIds()
Tüm basit ürün kimliklerini alırdım, ancak arka uçta bunlardan sadece birkaçı ortaya çıktı. Bir süre kazdıktan sonra, gösterilenlerin yapılandırılabilir ürünle aynı öznitelikte olanlar olduğunu öğrendim. Diğer özellik kümesi birinciye çok benzer, sadece bazı küçük farklılıklar vardır, ancak yapılandırılabilir nitelikleri (boyut ve renk) içerir.
Ve şimdi garip bir şey. Ön uçta tüm ürünleri (yukarıdaki kodda $ productIds) ya da sadece aynı özellik setindeki ürünleri görmeyi bekledim. Aralarında bir şey vardı.
- 20 ilişkili ürün kimliği - 5 boyut, 4 renk
- Arka uçta 10 ilişkili ürün - 5 boyut, 2 renk - diğer 2 renk (10 ürün) farklı bir özellik setindeydi
- Ön uçta 15 kombinasyon - 5 boyut 3 renk (???)
Görünmeyen ürünler için ayarlanan özniteliği değiştirerek sorunu çözebildim, ancak hala şaşkınım.
Not : Bunu evde denemeyin. Ya da evde deneyebilirsiniz, ancak canlı bir sunucuda deneyemezsiniz.