Magento复制选项

时间:2010-12-29 20:38:51

标签: php magento

我正在使用以下内容生成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,当我运行循环一次时,它会为第一个产品生成自定义选项,第二个产品有自己的自定义选项,第一个产品自定义选项,第三个产品有所有三个等的自定义选项..任何人都可以给我一些有关为什么会发生这种情况的见解?

3 个答案:

答案 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