3

将一件商品添加到购物车后如何重定向用户?
假设我希望他选择一件商品并转到结帐/单页,我该怎么做?

4

2 回答 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 回答