我想通过点击一个普通的保存按钮绕过magento购物车,该按钮通过ajax提交表单然后通过绕过购物车重定向到一个页面结帐(如使用windows.location.href)....请帮助
答案 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函数中进行更改。