添加产品进行比较后,Magento重定向到主页

时间:2014-06-17 09:13:59

标签: magento magento-1.8

有没有办法了解为什么在添加产品进行比较后重定向到主页?我已禁用所有扩展程序,但它仍然会重定向到主页。

使用的版本是1.8.0。

感谢任何帮助!

2 个答案:

答案 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());
            }