1

问题

我们正在使用 Magento 版本。1.7.0.1 并且我们遇到了一个问题,即用户从购物车中删除了一个项目,并且购物车将重定向回主页,而不是传统上只是返回到结帐页面(即使是零项目)。

背景

我们在登台服务器上的子文件夹中设置了站点,并且它可以正常工作。

发生这种情况的两者之间可能有什么不同?服务器本身非常相似。Ubuntu 10.04、PHP 5.3+ 等

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

我确实尝试了这里建议的“快速修复”,但可惜,没有运气。

4

2 回答 2

2

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

deleteAction 调用 _redirectReferer,传入*/*(它应该反过来成为checkout/cart)。_redirectReferer 函数遵循 3 条路径。

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

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

于 2012-09-15T08:05:07.413 回答
0

我通过以下步骤解决了这个问题。

导航"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');
    }

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

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

谢谢

于 2014-11-26T06:01:37.197 回答