【问题标题】:Magento - How to add multiple items to the cart programmatically?Magento - 如何以编程方式将多个项目添加到购物车?
【发布时间】:2012-09-12 16:57:49
【问题描述】:

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

谁能告诉我我做错了什么?

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

非常感谢任何帮助!

【问题讨论】:

标签: magento cart product


【解决方案1】:

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

  • 在购物车中添加没有属性的简单产品。
    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 = '自定义属性选项 ids',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没有设置将相关产品数量添加到购物车中。所以如果您想添加此代码而不是打开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

【讨论】:

    【解决方案2】:

    如果您不想更改任何代码,可以尝试通过在您的请求中添加 related_product 参数来利用 related 产品功能。所以你的网址看起来像这样:

    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 方法。

    【讨论】:

      【解决方案3】:

      我发现了一种厚颜无耻的方法,可以绕过上述其他答案中提到的相关产品查询字符串字段的数量限制。如果您只是将 SAME ID MULTIPLE TIMES 放在related_products 的值中,与您需要的数量一样多,那么将达到与每个相关产品都有一个明确的数量字段相同的效果。因此,采用上面 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 服务器上更改自定义代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        相关资源
        最近更新 更多