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

最模板

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

详解 Magento 多语言URL切换问题

时间:2014-08-05 02:27来源:未知 作者:最模板zuimoban 点击:
今天vcphp网站模板来分享一下Magento 多语言URL切换的问题,通常在SEO角度还是用户体验方面,URL的友好很重要。用户能看懂是一方面,最重要还是搜索引擎能够懂。 平时的时候大家想在

今天vcphp网站模板来分享一下Magento 多语言URL切换的问题,通常在SEO角度还是用户体验方面,URL的友好很重要。用户能看懂是一方面,最重要还是搜索引擎能够懂。
平时的时候大家想在不同语言下的产品URL也不一样,现在能做到的就是一个URL,可以不同语言切换,但URL还是原来的。

例如同一个产品的URL:
法语:http://www.XXX.com/abc123.html?___store=fr
德语:http://www.XXX.com/abc123.html?___store=de
这种就是URL还是一样的,只有语言发生变化。

现在给过我的优化可以实现Magento 多语言URL切换。
例如同一个产品的URL:
法语:http://www.XXX.com/aaaa-bbb-ccc.html?___store=fr
德语:http://www.XXX.com/12323-aaa-cddd.html?___store=de
这样是不是更友好?

实现不同语言,不同URL,前提你把把URL的属性全局设置为0。

在数据库里找到catalog_eav_attribute表,用sql语句找到URL属性。
执行:SELECT * FROM `eav_attribute` where attribute_code like ‘%url_key%’;

20140720121335

得到分类和产品URL的属性ID。

SELECT * FROM `catalog_eav_attribute` where attribute_id in(479,481);

20140720121648

把is_global的值改为0,如果是0了就不用改。

到后台重新索引你的URL。

至此还没完,需要修改一个文件,在里面加点东西。找到app\code\core\Mage\Core\Model\Store.php文件,然后再找到getCurrentUrl($fromStore = true)方法。

在return上方插入下面代码:

 
/ add start ,date 2014-05-15
$rewrite = Mage::getModel('core/url_rewrite');
// 得到id_path
$id_path = $rewrite->getCollection()
->addFieldToFilter('request_path',array('eq'=>$requestString))
->getFirstItem()->getData('id_path');
 
$store_id = Mage::getModel('core/store')
->getCollection()
->addFieldToFilter ("code",$this->getCode())
->getFirstItem()->getData('store_id');
// 得到request_path
$request_path = $rewrite->getCollection()
->addFieldToFilter('store_id',array('eq'=>$store_id))
->addFieldToFilter('id_path',array('eq'=>$id_path))
->getFirstItem()->getData('request_path');
 
$requestString = is_null($request_path) ? $requestString : $request_path;
// end

刷新看看,是不是可以切换了。如果成功的话,在切换语言那里会显示不同语言下的URl地址。
为了以后升级,不被替换建议把这个文件重写到local下。
如果你有更好的办法或解决方案,欢迎大家留言。

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