Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
magento:URL查询字符串,用于添加产品并将折扣优惠券应用到购物车_Magento_Url_Query String_Cart_Coupon - Fatal编程技术网

magento:URL查询字符串,用于添加产品并将折扣优惠券应用到购物车

magento:URL查询字符串,用于添加产品并将折扣优惠券应用到购物车,magento,url,query-string,cart,coupon,Magento,Url,Query String,Cart,Coupon,我是一名新手,经过广泛的研究和探索,我能够得出以下结论: 要将产品添加到购物车,我可以使用 /结帐/购物车/添加?产品=76&数量=1 要应用折扣代码,我可以使用 /结帐/购物车/couponPost?优惠券代码=WQ9D-XXXX 它的代码位于以下文件中: /public_html/app/code/local/Mage/Checkout/controllers/- 我想在一个链接中添加产品并应用折扣代码,例如: /结帐/购物车/couponPost?产品=76数量=1优惠券代码=WQ9D-X

我是一名新手,经过广泛的研究和探索,我能够得出以下结论:

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

/结帐/购物车/添加?产品=76&数量=1

要应用折扣代码,我可以使用

/结帐/购物车/couponPost?优惠券代码=WQ9D-XXXX

它的代码位于以下文件中:

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

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

/结帐/购物车/couponPost?产品=76数量=1优惠券代码=WQ9D-XXXX

/结帐/购物车/添加?产品=76数量=1优惠券代码=WQ9D-XXXX

或 还有别的办法吗

有没有办法让它工作起来?想法是将此链接嵌入到新闻稿中,这样用户只需单击一下就可以将产品添加到购物车并获得折扣


我尝试调用
$this->couponPostAction()来自
函数addAction()
,反之亦然,但它不起作用

让它在不修改代码的情况下工作

"http://www.example.com/checkout/cart/add?Product=76&qty;=1&返回_网址=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D-XXXX&返回_网址=http://www.example.com/checkout/cart/"

必须对返回url进行编码


请参阅:

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\u 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\u 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();
        }
    }

我可以验证Gaz的代码是否在1.8版上运行,上面的代码带有名称空间\u AddProductFromUrl

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


您可以创建一个自定义模块,将cart/add和cart/couponPost中的逻辑结合起来,或者创建静态页面,进行2次sperate ajax调用以添加产品id和优惠券代码。我认为这不会像您尝试的那样起作用。调用的控制器将简单地丢弃未使用的请求变量。您可能可以使用javascript实现这一点。链接到/add?product=X,然后只需修改主题的购物车/结帐phtml即可完成文档位置设置,以调用CouponPost。我们已经寻找了两年了!好发现!您的异地链接不再有效。这应该是一条评论,而不是答案。在Magento 1.9上尝试了此操作,但无法正常工作。我认为它需要对模块本身进行不同的声明。我修改了主CartController.php,它工作正常,但并不理想
<config>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Namespace_AddProductFromUrl before="Mage_Checkout">Namespace_AddProductFromUrl_Checkout</Namespace_AddProductFromUrl>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>