Yapılandırılabilir ürünler ve özellik kümesi


18

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 $simpleProductIdsbirleş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.

Yanıtlar:


13

Bunu sorduktan sonra nedenlerim var. Umarım sizin için tatmin edici olsa da, muhtemelen beklediğiniz gibi.

  1. Adminhtml arayüzü, tüccarların tamamen batmasını zorlaştırmak amacıyla yapıldı.

Bu nedenle Magento tarafından bir Çerçeve olarak sağlanan birçok özellik kullanıcı arabirimi üzerinden mümkün değildir.
Yalnızca aynı öznitelik kümesindeki ürünlerin yapılandırılabilir ürünler için ilişkili basit ürünler olarak seçilebilir olmasının nedeni, teknik özelliklerde belirtilen şeydir.
Söylediğiniz gibi, bu biraz mantıklı.

  1. Diğer bir neden ise öznitelik kümelerinin amacını düşünmektir. Var olma nedenlerinden biri, bir istek sırasında yüklenmesi ve işlenmesi gereken özelliklerin ve seçeneklerin sayısını azaltmaktır. Bu düşünceyi yapılandırılabilirlere uygulamak mantıklıdır, çünkü nispeten pahalı bir ürün türüdür.

Arka uç bu şekilde oluşturulduğundan, yapılandırılabilir ön uç mantığının hiçbir zaman farklı özellik kümelerinden basit ürünlerle uğraşması beklenmiyordu.
İşte bu yüzden kısıtlamalar tam olarak uygulanmıyor.

Muhtemelen yapılandırılabilirlerin farklı öznitelik kümelerinden basitlerle çalışmasını sağlamak kolay olurdu. Sadece bu şekilde tasarlanmamıştı.

Daha fazla sormadım ve hangi kod etkileşiminin ön uçtaki garip sonucu tam olarak ürettiğini görmek için kendime bakmadım. Muhtemelen önemli değil, çünkü eğer doğru bir şekilde anladıysam, basit ürünleri kod açıklaması değil, yapılandırılabilir özelliklerden farklı öznitelik kümelerinden hariç tutma kararının ardındaki mantığı sorduğunuzda.


Teşekkürler Vinai. Zihnimin derinliklerinde "akıllara durgunluk veren" bir sebep umuyordum. Eğlenceli olurdu :). Bu tatmin edici bir açıklamadır. "Garip sonuç" ise, kodu girmeye gerek yoktur. Sıkıldığımda bunu yapacağım. Hala DB dökümü ve aynı sonucu yeniden üretmek için bir yol var. Büyük olasılıkla doğrudan veritabanına vidalama çünkü. Ne zaman bulacağımı / bulursam sonuç göndereceğim.
Marius

2
Tsk tsk, @Marius - db'ye dokunmayın;)
philwinkle

4
@philwinkle. Biliyorum, biliyorum, eğer evren patlarsa patlar. Ne söyleyebilirim? Tehlikeli yaşamayı seviyorum. Savunmamda "bunu canlı bir sunucuda denemeyin" dedim.
Marius

1
Hala aklımı uçurmak için bekliyor ... :)
Vinai

2

İthalat ve ihracat için RapidFlow tarafından Unirgy (yeterince tavsiye edemiyorum) adlı bir uzantı kullanıyoruz. Pro sürümündeki özelliklerden biri, öznitelik kümelerinin değiştirilmesine izin verir. Bir diğeri, CSV içe aktarma yoluyla ürünlerin oluşturulmasıdır. Bazen yapılandırılabilirler için yeni basit ürünler yaratırız ve bazen de bu basit ürünlerin ebeveynlerinden farklı özellik kümeleri vardır.

Rapidflow bu ürünleri memnuniyetle içe aktaracak ve öznitelik kümelerini değiştirecektir. Sonuçlardan memnun değiliz. Öznitelik kümelerinin dışındaki öznitelikler tarafından yapılandırılan yapılandırılabilir ürünler, ürün yöneticisinde görüntülenemez ve onarılması gerekir. Ebeveynin nitelik kümesini değiştirmezsek, belirttiğiniz gibi, çocuklar ebeveynleriyle düzgün bir şekilde ilişkilendirilemez. Magento varlıkları olarak bulunurlar, düzenlenebilirler, ancak ön uç ürün sayfasında veya yapılandırılabilir ebeveynin ilişkili ürün listesinde çocuk olarak görünmezler.

Bu nedenle, tamamen teknik bir bakış açısından, basit ürünlerin ebeveynlerinden farklı bir özellikte olması mümkündür. Ancak bu davranış EE'de bile desteklenmediği için Occam'dan Razor, Magento'yu tasarlarken Varien geliştiricilerinin ihtiyacı görmediğini söylüyor.


1
Yanıt (ve uzatma önerisi) için teşekkürler, ancak bu sorumu yanıtlamıyor. Veritabanını doğrudan değiştirerek sorunumu çözdüğümü söyledim. Bunu yapmamam gerektiğini biliyorum ama ne yaptığımı iyi biliyordum - ve bir veritabanı yedekleme :). Sadece bu kısıtlamanın neden var olduğunu merak ettim. "Varien devs ihtiyacı görmedi kadar" yanıldığını hissediyorum. Bir kısıtlama uygularsanız bunun bir nedeni olmalıdır.
Marius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.