ruk*_*pat 4 url magento cart query-string coupon
我是一个新手,经过广泛的研究和探索,我能够弄清楚以下内容:
要将产品添加到购物车,我可以使用
/ 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()
反之亦然,但它不起作用!
没有修改代码就搞定了,
"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&回报; _url = HTTP://www.example.com/checkout/cart/"
return_url必须编码.
请参阅:http://www.magentocommerce.com/boards/viewthread/296763/
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
Run Code Online (Sandbox Code Playgroud)
您也可以省略最后一个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
Run Code Online (Sandbox Code Playgroud)
因此,只需简单地添加&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>
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/命名空间/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();
}
}
Run Code Online (Sandbox Code Playgroud)
应用/代码/本地/命名空间/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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6807 次 |
最近记录: |