最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > Magento > Magento教程 >

Magento去除Widget Link生成的URL后商店码

时间:2014-07-27 16:54来源:未知 作者:最模板zuimoban 点击:
原始链接:http://www.***.com/new-arrival.html?___store=default 处理链接:http://www.***.com/new-arrival.html 具体步骤: 1,仔细观察widget生成url的block: {{widget type=catalog/category_widget_link anchor_text=New Arr

原始链接:http://www.***.com/new-arrival.html?___store=default
处理链接:http://www.***.com/new-arrival.html
具体步骤:
1,仔细观察widget生成url的block:

{{widget type="catalog/category_widget_link" anchor_text="New Arrival" title="New Arrival" template="catalog/category/widget/link/link_inline.phtml" id_path="category/11"}}

2,根据type找到相应的Block:

//app\code\core\Mage\Catalog\Block\Category\Widget\Link.php
class Mage_Catalog_Block_Category_Widget_Link
    extends Mage_Catalog_Block_Widget_Link
{
    /**
     * Initialize entity model
     */
    protected function _construct()
    {
        parent::_construct();
        $this->_entityResource = Mage::getResourceSingleton('catalog/category');
    }
}

发现该类继承了Mage_Catalog_Block_Widget_Link 再向上查找Mage_Catalog_Block_Widget_Link类
3,在Mage_Catalog_Block_Widget_Link类中查找getHref方法

public function getHref()
    {
        if (!$this->_href) {
 
            if($this->hasStoreId()) {
                $store = Mage::app()->getStore($this->getStoreId());
            } else {
                $store = Mage::app()->getStore();
            }
 
            /* @var $store Mage_Core_Model_Store */
            $href = "";
            if ($this->getData('id_path')) {
                /* @var $urlRewriteResource Mage_Core_Model_Mysql4_Url_Rewrite */
                $urlRewriteResource = Mage::getResourceSingleton('core/url_rewrite');
                $href = $urlRewriteResource->getRequestPathByIdPath($this->getData('id_path'), $store);
                if (!$href) {
                    return false;
                }
            }
 
            $this->_href = $store->getUrl('', array('_direct' => $href));
        }
 
        if(strpos($this->_href, "___store") === false){
            $symbol = (strpos($this->_href, "?") === false) ? "?" : "&";
            $this->_href = $this->_href . $symbol . "___store=" . $store->getCode();
        }
 
        return $this->_href;
    }

重点在这里:

if(strpos($this->_href, "___store") === false){
            $symbol = (strpos($this->_href, "?") === false) ? "?" : "&";
            $this->_href = $this->_href . $symbol . "___store=" . $store->getCode();
        }

这段代码就是给链接后面添加商店码的。注释掉即可。

(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容