使用Magento中的扩展添加自定义选项

时间:2012-03-25 17:25:36

标签: magento e-commerce

我正在创建自定义扩展程序,我想在购买某个商品时添加自定义选项。

例如,当购买产品“名称标签”时,扩展程序将检测到已订购特定产品并为其分配自定义选项“年”。用户没有看到此信息,但在查看订单时会在管理员中添加并显示该属性。

我们有没有特定的听众来完成这项工作?

编辑根据Ben在评论中提出的建议,我正在编辑评论,以反映我对这里的答案所取得的进展:https://stackoverflow.com/a/9496266/268165

我现在有一个在Namespace_addYear下运行的扩展程序,并运行以下代码:

命名空间/ addYear的/ etc / config.xml中:

<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Namespace_addYear>
          <version>1.0.0</version>
        </Namespace_addYear>
    </modules>
    <global>


    </global>  
    <frontend>
        <events>
            <catalog_product_load_after>
                <observers>
                    <Namespace_addYear>
                        <type>model</type>
                        <class>addYear/observer</class>
                        <method>catalogProductLoadAfter</method>
                    </Namespace_addYear>
                </observers>
            </catalog_product_load_after>
        </events>
    </frontend>

</config> 

命名空间/ addYear /型号/ Observer.php:

class Namespace_addYear_Model_Observer

    public function catalogProductLoadAfter(Varien_Event_Observer $observer)
    {
        // set the additional options on the product
        $action = Mage::app()->getFrontController()->getAction();
        if ($action->getFullActionName() == 'checkout_cart_add')
        {
            // assuming you are posting your custom form values in an array called extra_options...
            if ($options = $action->getRequest()->getParam('extra_options'))
            {
                $product = $observer->getProduct();

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options'))
                {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }
                foreach ($options as $key => $value)
                {
                    $additionalOptions[] = array(
                        'label' => $key,
                        'value' => $value,
                    );
                }
                // add the additional options array with the option code additional_options
                $observer->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));
            }
        }
    }

}

Observer.php取自上面链接的答案。到目前为止,当我删除config.xml中的标签时,除了显示404页面之外,我无法让商店做任何其他事情。

有人能立即看到有什么不对吗?

0 个答案:

没有答案