动态添加产品自定义选项洋红色


dynamically add product custom options magento

我是洋红色的新手。我为从后端添加的产品添加了一些自定义选项,例如名称,地址,电子邮件。

所以现在看起来像这样:

Item 1
    Name : [textbox]
    Email : [textbox]
    Address : [textarea]

现在我想做的是动态添加自定义选项。为此,将有2个按钮,"添加项目"和"删除项目"。

因此,当我单击"添加项目"时,结果应如下所示:

Item 1
    Name : [textbox]
    Email : [textbox]
    Address : [textarea]
Item 2
    Name : [textbox]
    Email : [textbox]
    Address : [textarea]

当我单击"删除项目"时,它应该删除一个项目。

我该如何实现这一点?谢谢

如果它是完全动态的,您可以在产品详细信息页面上创建一个表单 要添加和删除项目,您需要使用 jQuery 创建。

对于按顺序管理

,如果您在报价中添加此数据,那么它将按整个顺序进行管理。

因此,要添加动态创建选项,您需要创建一个模块。

我已经创建了一个带有命名空间 Tech 的模块个人化intials如果您在产品详细信息页面上有此输入框,它将添加自定义选项。

因此,在创建模块之前,请在产品详细信息页面中添加新的表单元素 命名intials .

Tech/Personlization/etc/config.xml文件中,您需要按如下方式编码:

<?xml version="1.0"?>
<config>
<modules>
<Tech_Personlization>
  <version>1.0.0</version>
</Tech_Personlization>
</modules>
<global>
  <models>
  <personlization>
    <class>Tech_Personlization_Model</class>
    <resourceModel>personlization_mysql4</resourceModel>
  </personlization>
</models>
<events>        
    <catalog_product_load_after>
        <observers>
            <personlization>
                <type>model</type>
                <class>personlization/observer</class>
                <method>catalogProductLoadAfter</method>
            </personlization>
        </observers>
    </catalog_product_load_after>
    <sales_convert_quote_item_to_order_item>
        <observers>
            <personlization>
                <type>model</type>
                <class>personlization/observer</class>
                <method>salesConvertQuoteItemToOrderItem</method>
            </personlization>
        </observers>
    </sales_convert_quote_item_to_order_item>
</events>
</global>
</config> 

此外,还需要使用以下代码创建观察Tech/Personlization/Model/Observer.php

<?php
class Tech_Personlization_Model_Observer {
public function catalogProductLoadAfter(Varien_Event_Observer $observer)
{
    $action = Mage::app()->getFrontController()->getAction();
    if ($action->getFullActionName() == 'checkout_cart_add' || $action->getFullActionName() == 'checkout_cart_updateItemOptions'){          
        $product = $observer->getProduct();
        $post = Mage::app()->getRequest()->getPost();                   
                $array = array();
                $array['intials']  = $post['intials'];
                if ($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,
                            );
                        }
                    $observer->getProduct()->addCustomOption('additional_options', serialize($additionalOptions));
                }
    }
}
public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
{
    $quoteItem = $observer->getItem();
    if ($additionalOptions = $quoteItem->getOptionByCode('additional_options')) 
    {
        $orderItem = $observer->getOrderItem();
        $options = $orderItem->getProductOptions();
        $options['additional_options'] = unserialize($additionalOptions->getValue());
        $orderItem->setProductOptions($options);
    }                       
}
}

希望这个帮助!!