阅读:4633回复:0
在Magento中的URL像lightinthebox多语言切换
如何在Magento中的URL像lightinthebox多语言切换?
今天哥来分享一下干货,通常在SEO角度还是用户体验方面,URL的友好很重要。用户能看懂,搜索引擎也能看懂,岂不更好。 平时的时候大家想在不同语言下的产品URL也不一样,现在能做到的就是一个URL,可以不同语言切换,但URL还是原来的。 例如同一个产品的URL: 法语:http://www.hicoogle.com/aaaa.html?___store=fr 德语:http://www.hicoogle.com/aaaa.html?___store=de 这种就是URL还是一样的,只有语言发生变化。 现在给过我的优化可以实现多语言URL切换。 例如同一个产品的URL: 法语:http://www.hicoogle.com/aaaa-bbb-ccc.html?___store=fr 德语:http://www.hicoogle.com/nnnn-vvvv-ccvdd.html?___store=de 这样是不是更友好? 实现不同语言,不同URL,前提你把把URL的属性全局设置为0。 在数据库里找到catalog_eav_attribute表,用sql语句找到URL属性。 执行:SELECT * FROM `eav_attribute` where attribute_code like ‘%url_key%’; 图片:20140515154148.jpg 得到分类和产品URL的属性ID。 SELECT * FROM `catalog_eav_attribute` where attribute_id in(35,86); 图片:20140515154148.jpg 把is_global的值改为0,如果是0了就不用改。 到后台重新索引你的URL。 至此还没完,需要修改一个文件,在里面加点东西。找到appcodecoreMageCoreModelStore.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下。 赤裸裸的干货,说完了。如果你有更好的办法或解决方案,欢迎在下方评论处,大胆的贴出来,说不定你的就是最佳方案。 |
|