【发布时间】:2016-11-30 04:29:46
【问题描述】:
如何以编程方式将商品与一些预定义的文本一起添加到购物车中,这些文本会在订购后出现在评论历史记录中? 客户不应编辑此预定义的文本注释。它本质上用作订单项的元信息,履行订单的人需要了解。
如果这是不可能的,有没有其他方法可以为此目的将预定义的文本附加到购物车?
【问题讨论】:
标签: magento
如何以编程方式将商品与一些预定义的文本一起添加到购物车中,这些文本会在订购后出现在评论历史记录中? 客户不应编辑此预定义的文本注释。它本质上用作订单项的元信息,履行订单的人需要了解。
如果这是不可能的,有没有其他方法可以为此目的将预定义的文本附加到购物车?
【问题讨论】:
标签: magento
对我来说最好的方法应该是为这个元信息创建一个产品属性,并在查看订单页面(或查看我不知道的发货)上将属性值显示到自定义 adminhtml 主题中。 这样您就不必创建观察者,订购商品属性,...... 不利的一面是,如果您更新产品中的信息,该值也会在过去的订单中更新。这可能是个问题。
【讨论】:
我正在做类似的事情,但不完全相同......
我创建了一个模块,在将新产品添加到购物车时,我在其中向报价单添加了一些新的自定义值
在模块中,我有一个观察者:
<frontend>
<events>
<checkout_cart_product_add_after>
<observers>
<mymodule_addtocart_observer>
<class>mymodule_addtocart/observer</class>
<method>myMethod</method>
</mymodule_addtocart_observer>
</observers>
</checkout_cart_product_add_after>
在我的观察者中我更新我的报价
public function myMethod(Varien_Event_Observer $obs) {
$item = $obs->getQuoteItem();
$quote = $item->getQuote();
$quote->setData("myattribute", "myvalue");
}
我猜你也可以在观察者中更新你的项目。
希望对你有帮助……
【讨论】:
$installer->run(" ALTER TABLE '{$installer->getTable('sales/quote')}' ADD 'myattribute' int DEFAULT NULL COMMENT 'Description of my attribute'; ");
我的解决方案...
添加到购物车时,获取报价商品 ID,然后在磁盘上创建一个文本文件,以报价商品 ID 作为文件名。序列化您需要存储到此文件中的数据。然后为 sales_order_place_before 事件创建一个观察者。报价项目 ID 将传递给该事件,因此您可以引用该文本文件。
不要使用会话来存储数据,因为即使用户注销并稍后重新登录,购物车项目也会保留。
【讨论】: