问题
我们正在使用 Magento 版本。1.7.0.1 并且我们遇到了一个问题,即用户从购物车中删除了一个项目,并且购物车将重定向回主页,而不是传统上只是返回到结帐页面(即使是零项目)。
背景
我们在登台服务器上的子文件夹中设置了站点,并且它可以正常工作。
发生这种情况的两者之间可能有什么不同?服务器本身非常相似。Ubuntu 10.04、PHP 5.3+ 等
我只能认为这可能是一个路径问题(但没有运气追踪)
我确实尝试了这里建议的“快速修复”,但可惜,没有运气。
由于它只发生在您的实时服务器上而不是暂存服务器上,因此它似乎不太可能是与代码相关的问题。尝试在安装并启用扩展 TamperData 的 FireFox 中执行该操作。当您逐步完成这些步骤时,您应该会很好地指示该网站试图将您发送到哪里,如果运气好的话,您会在那里看到一个额外的重定向,它会立即点击发生的事情。除此之外,请确保启用了日志记录(系统 > 配置 > 开发人员 > 日志设置)并检查是否没有发生实际错误。
deleteAction 调用 _redirectReferer,传入*/*
(它应该反过来成为checkout/cart
)。_redirectReferer 函数遵循 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');
}
以上不是提供的方法。我只是解释了调试的地方。尝试创建一个模块并覆盖上述函数。这就是推荐的方式。
有关更多信息,请参阅此链接。
谢谢