杨海威 发表于 2015-1-18 19:42:25

让phpcms v9的tag标签支持中文URL

phpcmsV9程序,tag标签默认使用的是关键词转换后的urlencode路径格式,并且也不是伪静态,URL非常长,不利于SEO收录。
如官方演示站的URL:
http://v9.demo.phpcms.cn/index.php?m=content&c=tag&catid=10&tag=%C9%CF%BA%A3
其实上面URL就是查找关键词含有“上海”的文章,但URL太复杂了。
修改办法:
1、内容页模版路径:\phpcms\templates\default\content\show.html
找到
http://bbs.chinaz.com/handler.aspx?max_handler=down&action=album&s=2&id=102213
修改为:
http://bbs.chinaz.com/handler.aspx?max_handler=down&action=album&s=2&id=102214
2、找到文件:\phpcms\modules\content\tag.php
查找:
$page = $_GET['page'];
$datas = $infos = array();
$infos = $this->db->listinfo("`keywords` LIKE '%$tag%'",'id DESC',$page,20);
$total = $this->db->number;
if($total>0) {
$pages = $this->db->pages;
foreach($infos as $_v) {
if(strpos($_v['url'],'://')===false) $_v['url'] = $siteurl.$_v['url'];
$datas[] = $_v;
}
}
修改为:
$page = isset($_GET['page'])?$_GET['page']:1;
$datas = $infos = array();
$tag = iconv("utf-8","gb2312",$tag); //转编码
$infos = $this->db->listinfo("`keywords` LIKE '%$tag%'",'id DESC',$page,10);
$total = $this->db->number;
define('URLRULE',$siteurl.'/tags/'.$tag.'/'.$catid.'-{$page}.html');//为了解决v9伪静态后的翻页出现错误
if($total>0) {
$pages = pages($total,$page,10,URLRULE,array(),10) ;
foreach($infos as $_v) {
if(strpos($_v['url'],'://')===false) $_v['url'] = $siteurl.$_v['url'];
$datas[] = $_v;
}
}
3、.htaccess文件伪静态规则
RewriteRule ^tags/(.*)/(+)-(+).html$ index.php?m=content&c=tag&catid=$2&tag=$1&page=$3
这样就修改完成了,以后官方出补丁时候,小心别覆盖了。
以后tag标签的路径就是下面这样了:
http://你的域名/tags/上海/12-1.html
现在百度对中文URL支持的已经很好了,这样就可以收录更多,长尾词也更多
页: [1]
查看完整版本: 让phpcms v9的tag标签支持中文URL