在magento,我使用两个商店视图,一个是阿拉伯语,另一个是英语。当我将商店转换为英语时,这个字符串会附加在url(___ store = english)中,用于英语商店查看。对于阿拉伯语而言,这是明智的。现在我想删除?___ store = english for english和?___ store = arabic for arabic in URL。
答案 0 :(得分:3)
如果使用链接小部件,请使用以下过程。
将app/code/core/Mage/Catalog/Block/Widget/Link.php
复制到app/code/local/Mage/Catalog/Block/Widget/Link.php
搜索(Magento 1.7.x中的第91行/ Magento 1.9.x中的第100行)
$ this-> _href = $ this-> _href。 $符号。 “___ store =”。 $ store->引用代码();
并修改为
$ this-> _href = $ this-> _href;
上传并保存您的更改,您现在不会为您的小部件(动态)插入链接添加?___ store = default。
信用:DesignHaven
答案 1 :(得分:2)
要删除此格式:?___ store =英语为english,?___ store = arabic
在设计文件中找到languages.phtml
/app/design/frontend/default/template/page/switch/languages.phtml
在第41行
echo $_lang->getCurrentUrl()
将'false'添加为参数
echo $_lang->getCurrentUrl(false)
实际网址:
http:example.com?___store=english for english and ?___store=arabic
在$ _lang-> getCurrentUrl(false)方法中添加false参数后。网址将如下所示生成
http:example.com?___store=english
然后要删除'___ store = english'参数,您需要在控制器操作中添加预调度事件: 在本地模块config.xml中添加此代码
<controller_action_predispatch>
<observers>
<controller_action_before>
<class>marketplace/observer</class>
<method>setToControllerActionPreDispatch</method>
</controller_action_before>
</observers>
</controller_action_predispatch>
在本地观察者中添加此方法
public function setToControllerActionPreDispatch($observer)
{
$pathInfo = Mage::helper('core/url')->getCurrentUrl();
if(strpos($pathInfo, "___store") != ''){
$pathInfo = str_replace(array('?___store=arabic', '?___store=default'), '' , $pathInfo);
Mage::app()->getResponse()->setRedirect($pathInfo);
}
}
答案 2 :(得分:0)
在管理员到达系统&gt;配置(从顶部菜单),然后转到&#39; Web&#39;形成左侧菜单。
第一个选项是“将商店代码添加到网址&#39;”,将其设置为“否”。
答案 3 :(得分:0)
在看完这个并试验管理员之后,我的想法是考虑多个Magento'网站'而不是商店。即使您排除查询参数,Magento也希望将商店名称附加为URI的第一个组件。简而言之,我不确定在使用多个“商店”时尝试实际从URL中删除商店组件有多好。
答案 4 :(得分:0)
要删除此格式:?___ store = english for english
步骤1:转到system-&gt; Configuration。然后转到网络标签。你可以看到有一个选项&#39; &#34;将商店代码添加到网址&#34;将该选项设置为&#34;是&#34;
第2步:/app/design/frontend/base/default/template/page/switch/languages.phtml 找到以下代码:
echo $_lang->getCurrentUrl()
Add 'false' as parameter
echo $_lang->getCurrentUrl(false)
步骤3:将app / code / core / Mage / Catalog / Block / Widget / Link.php复制到 应用程序/代码/本地/法师/目录/砌块/空间/ Link.php
Search this line :
$this->_href = $this->_href . $symbol . "___store=" . $store->getCode();
And modify to :
$this->_href = $this->_href;
步骤4:转到“管理”面板,找到导航系统 - >“索引管理”&gt;&gt; Reindex数据
答案 5 :(得分:0)
我知道问题很老,但是如果有人需要此功能,并且您不想更改我派发的文件module on Github,并进行了一些改进。
您还可以使用composer进行安装。
答案 6 :(得分:0)
如果像我们一样,您已经被Google索引了这些URL,则应将它们排除在URL parameters中,确保您拥有canonical URL tag,然后还可以使用诸如index之类的内容来拦截请求。 php和301到没有多余参数的页面:
$url = parse_url($_SERVER['REQUEST_URI']);
if (!empty($url['query'])) {
//$params = arrary();
$checkingfor = array('___store', '___from_store');
parse_str($url['query'], $params);
if (count(array_intersect_key(array_flip($checkingfor), $params)) > 0) {
$vars = array_diff_key($params, array_flip($checkingfor));
$finalUrl = http_build_url(
'',
array(
"scheme" => $_SERVER['REQUEST_SCHEME'],
"host" => $_SERVER['SERVER_NAME'],
"path" => $url['path'],
"query" => http_build_query($vars)
)
);
header('Location: ' . $finalUrl, true, 301);
exit();
}
}
如果未安装PECL,请使用this alternative来http_build_url()。