有没有办法了解为什么在添加产品进行比较后重定向到主页?我已禁用所有扩展程序,但它仍然会重定向到主页。
使用的版本是1.8.0。
感谢任何帮助!
答案 0 :(得分:1)
$this->_redirectReferer();
在比较控制器的addAction中调用。
受保护的函数_redirectReferer($ defaultUrl = null) {
$refererUrl = $this->_getRefererUrl();
if (empty($refererUrl)) {
$refererUrl = empty($defaultUrl) ? Mage::getBaseUrl() : $defaultUrl;
}
$this->getResponse()->setRedirect($refererUrl);
return $this;
}
正如您所看到的,当调用_redirectReferer时,$ defaultUrl为空。 $ refererUrl也是空的。因此重定向到Mage :: getBaseUrl()。
当你看一下
protected function _getRefererUrl()
{
$refererUrl = $this->getRequest()->getServer('HTTP_REFERER');
if ($url = $this->getRequest()->getParam(self::PARAM_NAME_REFERER_URL)) {
$refererUrl = $url;
}
if ($url = $this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL)) {
$refererUrl = Mage::helper('core')->urlDecode($url);
}
if ($url = $this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
$refererUrl = Mage::helper('core')->urlDecode($url);
}
$refererUrl = Mage::helper('core')->escapeUrl($refererUrl);
if (!$this->_isUrlInternal($refererUrl)) {
$refererUrl = Mage::app()->getStore()->getBaseUrl();
}
return $refererUrl;
}
您会看到您可以通过self :: PARAM_NAME_REFERER_URL向您的比较/添加调用添加一个参数,您可以在其中移交重定向网址。这背后的const值是" referer_url",所以只需在请求中添加一个param referer_url,随后要重定向的内部位置。或者您只需设置$ defaultUrl变量。
答案 1 :(得分:1)
magento添加产品以比较控制器Mage>controlers>Catalog>Product>CompareController.php
_redirectReferer();
这是给你上次访问的页面,thought_redirectReferer() gives redirection url to home page
...
如果您在网址中指定了一个参数uenc,则会将其视为引荐来源。
如果您想重定向到产品,请将此代码添加到
然后添加代码$ this-> _redirectUrl($ product-> getProductUrl());在addAction()
中 if ($product->getId()/* && !$product->isSuper()*/) {
Mage::getSingleton('catalog/product_compare_list')->addProduct($product);
Mage::getSingleton('catalog/session')->addSuccess(
$this->__('The product %s has been added to comparison list.', Mage::helper('core')->escapeHtml($product->getName()))
);
Mage::dispatchEvent('catalog_product_compare_add_product', array('product'=>$product));
$this->_redirectUrl($product->getProductUrl());
}