Перенаправить Magento на одну страницу заказа после добавления товара в корзину - PullRequest
3 голосов
/ 29 октября 2010

Как я могу перенаправить пользователя после добавления одного товара в корзину?
скажем, я хочу, чтобы он выбрал один предмет и перешел на страницу оформления заказа / одну страницу, как я могу это сделать?

Ответы [ 2 ]

14 голосов
/ 29 октября 2010

Вы можете создать наблюдателя, слушающего событие 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>
1 голос
/ 05 августа 2017

Используя 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 по умолчанию

...