Magento - 如何以编程方式将多个项目添加到购物车?

时间:2012-09-12 16:57:50

标签: magento cart product

我正在尝试使用如下的查询字符串同时将多个简单产品添加到购物车,但是它只将最后一个产品添加到购物车而不是两者:

有人能让我知道我做错了吗?

http://www.domain.co.uk/checkout/cart/add?product=9916&qty=4&product=15749&qty=4

我也试过这个:

http://www.domain.co.uk/checkout/cart/add?product[]=9916&qty[]=4&product[]=15749&qty[]=4

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:6)

使用查询字符串将产品添加到购物车

  • 在没有属性的购物车中添加简单产品
    http://yourserver.com/checkout/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY
    此处PRODUCT_ID ='产品ID',PRODUCT_QUANTITY ='要购买的产品数量'。
  • 使用单一客户选项将产品添加到购物车中
    http://yourserver.com/checkout/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY&super_attribute[OPTION_ID]=OPTION_VALUE
    此处OPTION_ID ='自定义属性选项ID',OPTION_VALUE ='自定义属性选项值'。
  • 使用多重客户选项将产品添加到购物车中
    http://yourserver.com/checkout/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY&super_attribute[OPTION_ID_1]=OPTION_VALUE_1&super_attribute[OPTION_ID_2]=OPTION_VALUE_2
    OPTION_ID_1& OPTION_ID_1 ='自定义属性选项ID',OPTION_VALUE_1& OPTION_VALUE_2 ='自定义属性选项值'。在“super_attribute”数组中添加更多选项
  • 添加仅包含1个数量的邮件产品的额外产品
    http://yourserver.com/checkout/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY&related_product=PRODUCT_ID_1,PRODUCT_ID_2
    此处PRODUCT_ID_1和PRODUCT_ID_2是其他产品ID。使用`,`分隔符通过id添加更多产品。示例: - & related_product = 1,2,3,4。

默认magento没有设置将相关产品数量添加到cart.so如果您要添加此代码而不是打开app/code/core/Mage/Checkout/controllers/CartController.php查找public function addAction()

if (!empty($related)) {
                $cart->addProductsByIds(explode(',', $related));
            }

替换为

$rel_qty = $this->getRequest()->getParam('related_qty');
            if (!empty($related)) {
                $relatedproducts = explode(',', $related);
                $relatedqtys = explode(',',$rel_qty);
                $i = 0;
                foreach($relatedproducts as $relatedproduct)
                {
                    $cart->addProduct($relatedproduct, array('qty'=>$relatedqtys[$i]));
                $i++;
                }
            }

现在使用查询字符串添加数量相关的产品。

http://yourserver.com/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY&related_product=PRODUCT_ID_1,PRODUCT_ID_2&related_qty=PRODUCT_ID_1_QUANTITY,PRODUCT_ID_2_QUANTITY

答案 1 :(得分:3)

如果您不想更改任何代码,可以尝试通过在请求中添加 related_product 参数来利用相关的产品功能。所以你的网址将如下所示:

http://www.domain.co.uk/checkout/cart/add?product=9916&qty=4&related_product=15749

如果您想添加更多产品,请使用逗号分隔符列出它们:related_product=1,2,3 唯一的缺点是您实际上无法指定相关产品的数量。 要了解它的工作原理 - Mage_Checkout_Model_Cart::addProductsByIds(array_of_ids)

如果后续产品的数量是强制性的,您需要创建自己的控制器,或覆盖Mage_Checkout_CartController::addAction方法。

答案 2 :(得分:1)

我发现了一种厚颜无耻的方式,我发现在其他答案中解决了上面提到的related_products查询字符串字段的数量限制。如果您只将相同产品的值中的SAME ID MULTIPLE TIMES放入您需要的数量的次数,则可以获得与每个相关产品都有明确的qty字段相同的效果。因此,采取himansu的答案并进行调整我们得到:
http://yourserver.com/checkout/cart/add?product=PRODUCT_ID&qty=PRODUCT_QUANTITY&related_product=PRODUCT_ID_1,PRODUCT_ID_1,PRODUCT_ID_1,PRODUCT_ID_2,PRODUCT_ID_2

这将添加到PRODUCT_ID的购物车PRODUCT_QUANTITY,PRODUCT_ID_1的3个和PRODUCT_ID_2的2个。

因此,只要你很乐意做一些工作来多次生成相同的ID,这就是一种享受。并且您的magento服务器上不需要更改自定义代码。