4

我是一个新手,经过广泛的研究和探索,我能够弄清楚以下几点:

要将产品添加到购物车,我可以使用

/checkout/cart/add?product= 76 &qty= 1

应用我可以使用的折扣代码

/checkout/cart/couponPost?coupon_code= WQ9D-XXXX

它的代码位于文件中:

/public_html/app/code/local/Mage/Checkout/controllers/ -

我想在一个链接中添加产品并应用折扣代码,例如:

/checkout/cart/couponPost?product= 76 &qty= 1 &coupon_code= WQ9D-XXXX

或者

/checkout/cart/add?product= 76 &qty= 1 &coupon_code= WQ9D-XXXX

或任何其他方式?

有没有办法让这个工作?想法是将这个链接嵌入到时事通讯中,这样用户只需单击一下就可以将产品添加到购物车并获得折扣。

我试过打电话$this->couponPostAction();function addAction()反之亦然,但它不起作用!

4

3 回答 3

5

rukpat 的答案在 Magento 1.8 中不起作用。扩展 CartController 的 addAction 方法后,您需要像这样格式化 URL 和查询字符串:

http://www.example.com/checkout/cart/add?product=76&qty=1&return_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D-XXXX

您也可以省略最后一个 return_url 参数。没有必要包括 ; (分号)。

您还可以通过简单地执行以下操作将多个产品添加到具有多个数量的 URL:

http://www.example.com/checkout/cart/add?product=76&related_product=28,28,28&return_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D-XXXX

因此,只需添加 &related_product=28,28,28 并多次引用产品 ID,您就可以添加该商品的多个数量。不是很优雅,但它有效。

当然,最好扩展 CartController 的 addAction 方法。

为了让这个解决方案在 Magento 1.8 及更高版本中工作,您需要像这样修改 CartController:

注意:将“命名空间”替换为您自己的命名空间(公司名称或您的姓名等)。

etc/modules/Namespace_AddProductFromUrl.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_AddProductFromUrl>
            <active>true</active>
            <codePool>local</codePool>
        </Namespace_AddProductFromUrl>
    </modules>
</config>

app/code/local/Namespace/AddProductFromUrl/controllers/Checkout/CartController.php

<?php
    require_once 'Mage/Checkout/controllers/CartController.php';

    class Namespace_AddProductFromUrl_Checkout_CartController extends Mage_Checkout_CartController {
        # overloaded addAction
        public function addAction()
        {        
            // generate form_key if missing or invalid
            if ( ! ($formKey = $this->getRequest()->getParam('form_key', null)) or $formKey != Mage::getSingleton('core/session')->getFormKey())
            {
                $this->getRequest()->setParams(array('form_key' => Mage::getSingleton('core/session')->getFormKey()));
            }        

            // do parent actions
            parent::addAction();
        }
    }

应用程序/代码/本地/命名空间/AddProductFromUrl/etc/config.xml

<config>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Namespace_AddProductFromUrl before="Mage_Checkout">Namespace_AddProductFromUrl_Checkout</Namespace_AddProductFromUrl>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>
于 2014-03-19T16:42:28.720 回答
5

不用修改代码就可以工作,

'http://www.example.com/checkout/cart/add?Product=76&qty;=1&return;_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D- XXXX&return;_url=http://www.example.com/checkout/cart/'

return_url 必须被编码。

请参阅: http: //www.magentocommerce.com/boards/viewthread/296763/

于 2012-11-05T22:42:26.887 回答
0

我可以使用 Namespace_AddProductFromUrl 验证 Gaz 的上述代码是否适用于 1.8

此外,如果您的产品是捆绑产品,您必须使用以下格式的 url:

http://domain.com/en/checkout/cart/add?product=24&qty=1&bundle_option[2]=4&bundle_option[3]=8

于 2014-06-05T05:17:45.403 回答