ответ рукпата не работает в Magento 1.8. Вам нужно отформатировать URL-адрес и строку запроса таким образом, как только вы расширили метод addAction CartController:
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 с несколькими ссылками на идентификатор продукта, вы сможете добавить несколько количеств этого товара. Не очень элегантно, но работает.
Конечно, было бы лучше расширить метод addAction CartController.
Чтобы это решение работало в 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();
}
}
app/code/local/Namespace/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>
person
Gareth Daine
schedule
19.03.2014