検出されたように見えるオブザーバーを作成し、正常に実行しています。オブザーバーは、カスタムオプションデータを製品に動的に追加するために使用されます。
私は最初に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関連の微調整があるかどうか誰かが知っていますか?指定されたカスタムオプションデータは、この段階での単なるテストです。機能させることができたら、追加するオプションデータを変更します。
どうもありがとう