开发者

Redirect Magento to checkout onepage after adding item to cart

开发者 https://www.devze.com 2023-01-22 19:00 出处:网络
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 lis

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

0

精彩评论

暂无评论...
验证码 换一张
取 消