Redirect Magento to checkout onepage after adding item to cart
How can I redirect the user after it 开发者_开发百科adds one item to the cart?
lets say I want him to choose one item and go to the checkout/onepage, how can I do that?You could create an observer listening for the checkout_cart_add_product_complete event and in there you could do something like the following
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);
}
Your config would look something like this
<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>
Using checkout_cart_add_product_complete you will miss out on product addtocart success message check this
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();
}
Again if you don't wont the session messages, just pass additional parameter from your product page
<input type="hidden" name="return_url" value="<?php echo $this->getUrl('checkout/onepage')?>"/>
No need for any other customization or module creation, its magento's default functionality
精彩评论