我正在使用以下内容生成magento产品的自定义选项:
$options = array();
$options = array(
'title' => 'Select Options',
'type' => 'radio',
'is_require' => 1,
'sort_order' => 0,
'values' => array()
);
$options['values'][] = array(
'title' => $customAttributeString,
'price' => 0.00,
'price_type' => 'fixed',
'sku' => $uniqueId,
'sort_order' => '1'
);
$id = Mage::getModel('catalog/product')->getIdBySku($sku);
$product = Mage::getModel('catalog/product')->load($id);
if(!$product->getOptionsReadonly()) {
$product->setProductOptions(array($options));
$product->setCanSaveCustomOptions(true);
$product->save();
}
我在循环中运行,每次使用不同的SKU,当我运行循环一次时,它会为第一个产品生成自定义选项,第二个产品有自己的自定义选项,第一个产品自定义选项,第三个产品有所有三个等的自定义选项..任何人都可以给我一些有关为什么会发生这种情况的见解?
答案 0 :(得分:15)
对于迟到的回复感到抱歉,但由于Magento将product_option作为Singleton进行管理,您需要在每次迭代时重置它:
Mage::getSingleton('catalog/product_option')->unsetOptions();
希望这有帮助。
纪尧姆
答案 1 :(得分:1)
$product->setProductOptions(array($option));
注意,你设置的不是$ options而是$ option(最后没有“s”)。也许它与代码片段中未显示的一些变量相交。
另外 $ options = array(); 在这里没用,只需删除它
如果你在你的代码示例中包含$ customAttributeString,$ sku,$ uniqueId的迭代周期和初始化,那就更好了。
答案 2 :(得分:0)
Mage::getSingleton('catalog/product_option')->unsetOptions();
在循环迭代之前正常工作
Atif