2012-01-27 83 views
4

我一直在阅读教程的很多在互联网,但即使在Magento站点的那些是1.5版本或甚至一些功能的引用不再存在。自定义数据添加到购物车项目在Magento 1.6

什么我做的是简单的,我发送一个项目一个自定义脚本的Magento之外,其中用户进行设计,那么客户可以点击添加到购物车从那里和它重新添加到Magento的。

我需要的是将设计的图像文件名称作为订单处理中显示的订单项特定数据片段,以及客户端和管理端的查看订单历史记录。

我有一个模块挂钩到checkout_cart_product_add_after,并能够获得以下信息:designsdesignIddesignId用于用户返回编辑设计的情况,因此设计被重新加载,然后当物品返回时,如果不同,designsdesignId内容应该被替换。

目前,我正在通过URL将产品添加到购物车,因为有关如何将其实用工具添加到某种程度的示例,但最终无法保存到购物车。我假设STORE_ID和Magento代码中的一些随机毛刺之间的区别。

我很欣赏指向更坚实的信息,而不是仅仅翻阅旧的文档来查看是否有任何有用的东西摆脱它,它已经让我走得这么远,但它不是一个正确完成工作的有效方法。

+0

你用什么样的方法?您尝试了URL参数选项,但忘记了放置示例代码。也许,你的代码是错误的! – 2012-01-27 20:37:18

+0

对文档更​​感兴趣。添加购物车的代码是最不感兴趣的,因为该模块确实获得了我需要的信息,我专注于实际将数据添加到从URL添加到购物车的订单项中,除非实际上更轻松地添加它们,在这种情况下,我会粘贴代码。 – user00265 2012-01-27 20:57:17

回答

7

这种方法有很多事情需要考虑,并且有几种方法可以做到。如果有任何事情,这很不简单。

A)首先,看看这是否可以通过现有的产品定制选项来实现。如果有什么办法可以做到这一点,而无需改变大量的核心功能,它会让你的生活更轻松。 B)就个人而言,我会考虑为您的自定义内容创建一个模型,并在该内容与sales/quote_itemsales/order_item之间建立关系。您需要修改前端才能使用此功能,并且还需要管理区域才能显示信息,并为管理员提供了将自定义内容添加到项目的方法。这可能是你做到最彻底的方式。

C)或者,您可以在将项目添加到报价时将自定义数据数组添加到报价中。为此,您将不得不完全劫持添加到购物车控制器。首先,从现有控制器中获取所有功能。看看Mage_Sales_Model_Quote :: addProduct命令()函数,你会看到它有两个参数,如下所示:

$quote->addProduct($product, $request); 

其中$request是格式化这样Varien_Object类型:

$request = new Varien_Object(array(
    'qty'=>$qty, 
    'options'=>$options, 
    'custom_options'=>$custom_options 
)); 

,并在那里$custom_options是一组自定义数据。

这种方式可能有用,但充满危险。您需要确保您复制了原始加载车控制器的所有功能,包括分派事件并设置所有会话标志。还有其他的考虑。如果您的数据是特定订单项,那么我们可以安全地假设您不希望Magento简单地增加购物车中订单项的数量,因为特定数据适用于特定的订单项。为此,您可以覆盖Mage_Sales_Model_Quote,然后复制getItemByProduct()函数对订单项运行不同的检查集,以确定是否增加数量。

如果你不能做A,B是我推荐的方法。短期来看,这可能会耗费更多时间,但长期而言则是更好的解决方案。

相关问题