我是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]
当我点击“删除项目”时,它应该删除一个项目。
我该如何实现?感谢
答案 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);
}
}
}
希望这个帮助!!