TL; DR:構成可能製品に関連付けられている単純な製品が、構成可能製品自体と同じ属性セット内にある必要がある理由はありますか?つまり、技術的な理由はありますか?「常識」の理由を知っています。あなたは、一対販売している場合の靴を、色やサイズに応じて、すべてのバージョンはする必要が靴も。
長いバージョン:いくつかの設定可能な製品を「マージ」するタスクがありました。2つ以上から1つだけを作るということです。製品の量が多いため、手動でやりたくありませんでした。$product->load(..)->set...()->save()
スクリプトの実行に時間がかかったためです。だから、単純な製品はどれも重なっていないと確信していたので、プロセスを短絡させた。サイズと色のユニークな組み合わせがありました。これは私がしました:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
ここ$simpleProductIds
で、マージが必要な構成可能な製品すべてに関連付けられたすべての単純な製品IDの配列です。
これはほとんどの製品で完全に機能しましたが、問題のあるものがいくつかありました。
電話したら
$productIds = $product->getTypeInstance()->getUsedProductIds()
私はすべての単純な製品IDを取得しますが、バックエンドにはそれらのほんの一部しか表示されません。しばらく掘り下げた後、表示されたのは構成可能な製品と同じ属性セットのものだけであることがわかりました。他の属性セットは最初の属性セットと非常に似ており、わずかな違いがありますが、構成可能な属性(サイズと色)が含まれています。
そして今、奇妙なこと。フロントエンドでは、すべての製品(上記のコードの$ productIds)または同じ属性セットの製品のみが表示されると予想していました。まあ間に何かがありました。
- 20の関連製品ID-5つのサイズ、4つの色
- バックエンドの10個の関連製品-5サイズ、2色-他の2色(10製品)は異なる属性セットにありました
- フロントエンドで15の組み合わせ-5つのサイズ3色(???)
表示されなかった製品の属性セットを変更することで問題を解決できましたが、まだ困惑しています。
注:自宅ではこれを試さないでください。または、自宅で試してみることができますが、ライブサーバーでは試せません。