Magento でプログラムによってバンドルされた製品をカートに追加するときに、製品オプション配列の「bundle_option」フィールドのドキュメントがどこにも見つからないようです。したがって、これを正しく行う方法がわかりません。
しかし、これは私の試みです:
$json_obj = json_decode($json_string, true);
//define cart
$cart = Mage::getSingleton('checkout/cart');
$bundle = array();
$bundle_qty = array();
for ($i=0; $i<count($json_obj['basket']['products']); $i++) {
$product_id = int($json_obj['basket']['products'][$i]['id']);
#add individual products to cart
#$product = new Mage_Catalog_Model_Product();
#$product->load($product_id);
#$params = array('product'=>$product_id,'qty'=>1);
#if ($product->getName()) $cart->addProduct($product, $params);
#add products to bundle
$bundle[$i] = $product_id;
if (isset($bundle_qty[$product_id])) $bundle_qty[$product_id] += (int)1;
else $bundle_qty[$product_id] = (int)1;
}
#add to bundled product to cart
$product = new Mage_Catalog_Model_Product();
$product->load(833); #833 = test bundle
$cart->addProduct($product, array('product'=>833,
'qty'=>min(1,int($json_obj['basket']['quantity'])),
'bundle_option'=>$bundle,
'bundle_option_qty'=>$bundle_qty));
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
$message = $this->__('Notice: %s item(s) were successfully added to your shopping cart.', $i);
Mage::getSingleton('checkout/session')->addSuccess($message);
}
したがって、コメントアウトされたコードは、正しく機能する製品を個別に追加しています。現在、代わりに「テスト バンドル」製品に製品を追加しようとしています。
ループ内で現在行っていることは、「bundle_option」フィールドと「bundle_option_qty」フィールドの配列をコンパイルすることです。ループが終了したら、バンドル商品 (ID:833) を、バンドルされたアイテムの options 配列と共にカートに追加します。
その結果、カートには何も追加されません。また、コードを少しいじってみましたが、成功しませんでした。
どこが間違っているのか、または bundle_option 配列 (インデックスとは何か、値とは何か) の詳細を説明する製品オプション パラメーターのドキュメント/チュートリアルを教えていただけないでしょうか?