PHPCMSV9的默认TAG控制器是采用GET中文关键词的形式来读取keyword表内的关键词,读取对应的id和内容进行的展现,很多人认为中文url不好,有说太长的,因为中文url被浏览器转码确实很长,也有说不好看的,还有说影响SEO的,所以,我出个教程来改一下吧
打开/phpcms/modules/content/tag.php
在lists方法内找到
1 2 3 4 | $tag = safe_replace(addslashes($_GET['tag'])); $keyword_data_db = pc_base::load_model('keyword_data_model'); //获取标签id $r = $this->keyword_db->get_one(array('keyword'=>$tag, 'siteid'=>$this->siteid), 'id'); |
改成:
1 2 3 4 5 6 7 8 | $keyword_data_db = pc_base::load_model('keyword_data_model'); if ($_GET['id']) { $id = safe_replace(addslashes($_GET['id'])); $v = $this->keyword_db->get_one(array('id'=>$id, 'siteid'=>$this->siteid), 'id,keyword'); } else { $tag = safe_replace(addslashes($_GET['tag'])); $v = $this->keyword_db->get_one(array('keyword'=>$tag, 'siteid'=>$this->siteid), 'id,keyword'); } |
这样一改,可以实现中文和id形式并存,如下:
中文形式:index.php?m=content&c=tag&a=lists&tag=中文
ID形式:index.php?m=content&c=tag&a=lists&id=5
继续向下:
找到:
1 2 | if (!$r['id']) showmessage('不存在此关键字!'); $tagid = intval($r['id']); |
看到里面的$r没有,改成$v
接着往下:
53-54行(大约)里面找到$tag改成$v[‘keyword’] 共四处
然后找到:
1 | $SEO = seo($siteid, '', $tag); |
改成
1 | $SEO = seo($siteid, '', $v['keyword']); |
接下来就是改模板,因为模板有一处显示GET来的标签名称
/phpcms/templates/default/content/tag_list.html的第五行的标签后面{$tag}改成{$v[‘keyword’]}
哦也,大功告成
发表评论 取消回复