Magento从购物车中删除商品后重定向到主页


Magento redirects to homepage after item removed from cart

问题

我们正在使用Magento版本1.7.0.1,我们遇到了一个问题,即用户从购物车中删除商品,购物车将重定向回主页,而不是通常只是返回结帐页面(即使没有项目(。

背景

我们将站点设置放在暂存服务器上的子文件夹中,并且它完美地工作。

这两者之间可能有什么不同?服务器本身非常相似。Ubuntu 10.04, PHP 5.3+, 等等

我只能认为这可能是一个路径问题(但没有运气追踪它(

我确实尝试了这里建议的"快速修复",但唉,没有运气。

由于它只发生在您的实时服务器上而不是暂存服务器上,因此它似乎不太可能是与代码相关的问题。尝试在 FireFox 中执行该操作,并安装并启用扩展名 TamperData 。当您逐步完成这些步骤时,您应该很好地指示网站试图将您发送到哪里,运气好的话,您会看到一个额外的重定向,它会立即单击正在发生的事情。除此之外,请确保已启用日志记录(系统>配置>开发人员>日志设置(,并检查是否没有发生实际错误。

删除操作调用_redirectReferer,传入*/*(这反过来应该变成checkout/cart(。_redirectReferer函数遵循 3 条路径。

  1. 如果有引荐来源网址,则重定向到它。
  2. 如果没有引荐来源网址,但有一个默认网址,请重定向到该网址
  3. 否则重定向到主页。

基于这些事实,您可能会立即假设步骤 3 正在发生,但由于 deleteAction 正在传递参数,因此应该不可能通过步骤 2,因为总会有一个默认 url。

我按照以下步骤解决了这个问题。

导航到"app'code'core'Mage'Checkout'controllers'CartController.php".

找到"deleteAction()"函数,该函数将看起来像波纹管。

公共函数删除操作(( {

    $id = (int) $this->getRequest()->getParam('id');
    if ($id) {
        try {
            $this->_getCart()->removeItem($id)
              ->save();
        } catch (Exception $e) {
            $this->_getSession()->addError($this->__('Cannot remove the item.'));
            Mage::logException($e);
        }
    }
    $this->_redirectReferer(Mage::getUrl('*/*'));
}

您需要将行"$this->_redirectReferer(Mage::getUrl('*/*'));"更改为$this->_redirect('checkout/cart');。所以现在函数将如下所示。

public function deleteAction()
    {
        $id = (int) $this->getRequest()->getParam('id');
        if ($id) {
            try {
                $this->_getCart()->removeItem($id)
                  ->save();
            } catch (Exception $e) {
                $this->_getSession()->addError($this->__('Cannot remove the item.'));
                Mage::logException($e);
            }
        }
        $this->_redirect('checkout/cart');
    }

以上不是这样做的方法。我只是解释了调试的地方。尝试创建一个模块并覆盖上述函数。这就是提议的方式。

有关更多信息,请参阅此链接。

谢谢