magento:URL查询字符串,用于添加产品并将折扣优惠券应用到购物车
我是一名新手,经过广泛的研究和探索,我能够得出以下结论: 要将产品添加到购物车,我可以使用 /结帐/购物车/添加?产品=76&数量=1 要应用折扣代码,我可以使用 /结帐/购物车/couponPost?优惠券代码=WQ9D-XXXX 它的代码位于以下文件中: /public_html/app/code/local/Mage/Checkout/controllers/- 我想在一个链接中添加产品并应用折扣代码,例如: /结帐/购物车/couponPost?产品=76数量=1优惠券代码=WQ9D-XXXX 或 /结帐/购物车/添加?产品=76数量=1优惠券代码=WQ9D-XXXX 或 还有别的办法吗 有没有办法让它工作起来?想法是将此链接嵌入到新闻稿中,这样用户只需单击一下就可以将产品添加到购物车并获得折扣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
我尝试调用
$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>