单击常规保存按钮绕过Magento购物车并重定向到onepagecheckout

时间:2013-12-10 10:21:38

标签: magento cart

我想通过点击一个普通的保存按钮绕过magento购物车,该按钮通过ajax提交表单然后通过绕过购物车重定向到一个页面结帐(如使用windows.location.href)....请帮助

2 个答案:

答案 0 :(得分:0)

索,

您可以为此目的创建一个观察者,如下所示:

您的配置看起来像这样:

<frontend>
<events>
<checkout_cart_add_product_complete>
         <observers>
         <packagename_modulename_observer>
              <type>singleton</type>
              <class>packagename_modulename/observer</class>
              <method>addToCartComplete</method>
         </packagename_modulename_observer>
         </observers>
     </checkout_cart_add_product_complete>
 </events>
</frontend>

您可以创建一个观察者来监听checkout_cart_add_product_complete事件,并在那里执行以下操作:

public function addToCartComplete(Varien_Event_Observer $observer) {
// Send the user to the Item added page
$response = $observer->getResponse();    
$request = $observer->getRequest();
$response->setRedirect(Mage::getUrl('checkout/onepage'));
Mage::getSingleton('checkout/session')->setNoCartRedirect(true);
}

第二个更公平更简单:

在CartController.php中转到app / code / core / Mage / Checkout / controllers /

复制此文件和搜索方法

protected function _goBack()

变化

$this->_redirect('checkout/cart');

$this->_redirect('checkout/onepage');

希望这些方法可以帮助您完成所需的过程。

答案 1 :(得分:0)

我一直在努力做同样的事情。我推荐SKVs的第二个解决方案(编辑CartController)但当然你不应该编辑核心。覆盖控制器并不像覆盖模型对象那么简单。

虽然您可以将app\code\core\Mage\Checkout\Model\Cart.php复制到app\code\local\Mage\Checkout\Model\Cart.php,但要进行编辑并完成它,重写控制器类并不是那么简单。据我所知,您在您自己的模块中执行此操作。这就是我所做的。

制作模块:app \ code \ local \ Companyname \ Checkout。

在此模块中添加了etc \ config.xml:

<config>
    <modules>
        <Companyname_Checkout>
            <version>0.1.0</version>
        </Companyname_Checkout>
    </modules>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Companyname_Checkout before="Mage_Checkout">Companyname_Checkout</Companyname_Checkout>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

在我的模块中添加了controller \ CartController.php。这是核心CartController的副本,但我改变了

class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action

为:

require_once(Mage::getModuleDir('controllers','Mage_Checkout').DS.'CartController.php');
class Pixelkracht_Checkout_CartController extends Mage_Checkout_CartController 

最后,按照SKV的建议在_goBack函数中进行更改。