我创建了一个观察者,似乎被检测到,并且运行正常。 观察者用于向产品动态添加自定义选项数据。
我最初得到MYSQL约束违规,在网上研究之后,我认为这是由于观察者试图将自定义选项数据添加到数据库,在我创建新产品之前,实际上是保存到数据库中。
我更改了我的config.xml,因此'catalog_product_save_before'现在是'catalog_product_save_after'。 产品保存得很好,但我的观察者中指定的自定义选项数据不在产品详细信息中。
我的config.xml:
<events>
<catalog_product_save_after>
<observers>
<micoavp>
<type>singleton</type>
<class>Bsm_Micoavp_Model_Observer</class>
<method>Add_CustomOptions_Automatically</method>
</micoavp>
</observers>
</catalog_product_save_after>
</events>
我的观察员代码:
public function Add_CustomOptions_Automatically($observer) {
$event = $observer->getEvent();
$product = $event->getProduct();
$optionData = array(
'is_delete' => 0,
'is_require' => false,
'previous_group' => '',
'title' => 'want to preorder ? ',
'type' => 'checkbox',
'price_type' => 'fixed',
'price' => '20.0000',
'sort_order' => 0,
'values' => array(
array(
'is_delete' => 0,
'title' => 'preorder',
'price_type' => 'percent',
'price' => -20,
'sku' => 'product sku',
'option_type_id'=> -1,
))
);
$product->setHasOptions(1);
$opt = Mage::getModel('catalog/product_option');
$opt->setProduct($product);
$opt->addOption($optionData);
$opt->saveOptions();
Mage::log("option should be added now");
}
我从这个url获得了代码,它声明它是1.5 CE: http://www.webmasterbulletin.net/2011/04/magento-programmatically-add-custom-options/1417
是否有人知道是否需要进行1.6相关调整才能使其正常工作? 指定的自定义选项数据只是在此阶段的测试,一旦我可以使其工作,我将更改要添加的选项数据。
非常感谢答案 0 :(得分:0)
上面的代码似乎没问题。只需要在最后添加以下行。
$product->addOption($opt);