动态添加产品自定义选项magento

时间:2014-11-25 10:13:53

标签: php magento

我是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]

当我点击“删除项目”时,它应该删除一个项目。

我该如何实现?感谢

1 个答案:

答案 0 :(得分:1)

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

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

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

我创建了一个模块 Personlization ,其命名空间为 Tech ,如果您在产品详细信息页面上有可用的输入框,则会添加intials自定义选项。< / p>

因此,在创建模块之前,在产品详细信息页面中添加新的表单元素命名为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);
    }                       
}

}

希望这个帮助!!