将一件商品添加到购物车后如何重定向用户?
假设我希望他选择一件商品并转到结帐/单页,我该怎么做?
问问题
8174 次
2 回答
14
您可以创建一个监听 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);
}
你的配置看起来像这样
<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>
于 2010-10-29T15:18:06.047 回答
1
使用 checkout_cart_add_product_complete 您将错过产品 addtocart 成功消息检查此
Mage::dispatchEvent('checkout_cart_add_product_complete',
array('product' => $product, 'request' => $this->getRequest(), 'response' => $this->getResponse())
);
if (!$this->_getSession()->getNoCartRedirect(true)) {
if (!$cart->getQuote()->getHasError()) {
$message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->escapeHtml($product->getName()));
$this->_getSession()->addSuccess($message);
}
$this->_goBack();
}
同样,如果您不希望会话消息,只需从您的产品页面传递其他参数
<input type="hidden" name="return_url" value="<?php echo $this->getUrl('checkout/onepage')?>"/>
无需任何其他自定义或模块创建,它是 magento 的默认功能
于 2017-08-05T06:23:10.310 回答