将自定义数据添加到Magento 1.6中的购物车项目

use*_*265 4 php magento e-commerce

我一直在浏览互联网上的很多教程,但即使是Magento网站上的教程都是1.5或更低版本,甚至一些函数引用也不再存在.

我正在做的很简单,我发送一个项目到Magento之外的自定义脚本,用户进行设计,然后客户可以从那里单击添加到购物车,然后将其添加回Magento.

我需要的是让设计的图像文件名是订单处理中显示的特定于订单项的数据,以及客户和管理的查看订单历史记录.

我有一个模块可以挂钩checkout_cart_product_add_after并能够获得以下信息:designsdesignId.designId在用户返回编辑设计的情况下使用,因此重新加载设计,然后当项目被传回时,如果不同,则应替换designsdesignId内容.

目前,我正在通过URL将产品添加到购物车,因为有关如何实际添加产品的示例在一定程度上起作用,但最终无法保存到购物车.STORE_ID我假设Magento代码中的一些随机故障之间存在差异.

我非常感谢指向更加可靠的信息,而不仅仅是翻阅旧的文档,看看是否有任何有用的东西可以摆脱它,它已经让我这么远,但它不是一个有效的方法来完成事情.

Mag*_*Guy 7

这种方法有很多事情要考虑,有几种方法可以做到.如果有的话,它远非简单.

A)首先,看看是否可以使用现有的产品自定义选项实现这一点.如果有任何方法可以在不改变大量核心功能的情况下完成,那么它将使您的生活更轻松.

B)就个人而言,我会考虑为您的自定义内容模型和内容之间的关系sales/quote_itemsales/order_item.您需要修改前端以将其带入,并且还需要管理区域来显示信息,并为管理员提供将自定义内容添加到项目的方法.这可能是您可以做到最彻底的方式.

C)或者,您可以在将项添加到引用时向引号添加一组自定义数据.为此,您必须完全劫持添加到购物车的控制器.首先,从现有控制器中获取所有功能.查看Mage_Sales_Model_Quote :: addProduct()函数,您将看到它需要两个参数,如下所示:

$quote->addProduct($product, $request);
Run Code Online (Sandbox Code Playgroud)

其中$request是式的Varien_Object格式是这样的:

$request = new Varien_Object(array(
    'qty'=>$qty,
    'options'=>$options,
    'custom_options'=>$custom_options
));
Run Code Online (Sandbox Code Playgroud)

以及$custom_options一系列自定义数据.

这种方式很有用,但却充满了危险.您需要确保复制原始"添加到购物车"控制器的所有功能,包括调度事件和设置所有会话标志.还有其他考虑因素.如果您的数据是特定于行项目,那么我们可以安全地假设您不希望Magento只是增加购物车中订单项的数量,因为特定数据适用于特定订单项.要执行此操作,您将覆盖Mage_Sales_Model_Quote并复制该getItemByProduct()函数以对该行项目运行不同的检查集,以确定是否增加数量.

如果你不能做A,B是我的推荐方法.它可能在短期内耗费更多时间,但长期是更好的解决方案.