我是洋红色的新手。我为从后端添加的产品添加了一些自定义选项,例如名称,地址,电子邮件。
所以现在看起来像这样:
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);
}
}
}
希望这个帮助!!