phpcms v9.4/9.5 tag伪静态设置及分页修改

第一次设置tag伪静态的时候,出现了很多问题,只是当时没搞明白,
现在分享一下我成功的方法:
先看一下效果,是这个样式的

v9的tags的实现方式:/tag-测试-1.html

1、在后台-扩展-URL规则管理中添加

  模块名称:内容模块
  静态 (这里选的是静态)
  url示例:tag-测试-1.html
  url规则:tag-{$tag}-{$page}.html
记住这里生成这个url规则的 我的是33

2、修改phpcms\modules\content里面的tag.php文件

打开tag.php文件,找到这行代码:
$infos = $keyword_data_db->listinfo($where, 'idDESC', $page, $pagesize);
改为:
//add tag
$urlrules = getcache("urlrules","commons");
$urlrule = $urlrules[33];//调用url规则
$infos = $keyword_data_db->listinfo($where, 'idDESC',$page,$pagesize,"","9",$urlrule,array("tag"=>urlencode($tag)));

注意:这里 $urlrules $urlrule 属于新加的代码 $infos 替换原来的

3、修改模板

打开phpcms\templates\default\content\show.html,找到:
{APP_PATH}index.php?m=content&c=tag&a=lists&tag={urlencode($keyword)}
改成:
{APP_PATH}tag-{urlencode($keyword)}-1.html

4. tag标签 分页设置

http://www.aseoe.com/tag-HTML5-1.html
http://www.aseoe.com/tag-HTML5-2.html
如想把分页设置成上面的效果
修改tag.html 或tag_list.html (具体看你用的是哪个模板 我默认用的就是 tag_list.html这个)
只需把 {$pages}
改成
{str_replace("-0.html","-1.html",$pages)}
是不是很简单,这个懂得话当然简单,不懂话需要花费很长时间去研究。

5. 最后一步 在.htaccess文件里加入URL规则

在网站的根目录的.htaccess文件 加入以下URL规则
RewriteRule ^tag-(.*)-([0-9]+).html index.php?m=content&c=tag&a=lists&tag=$1&page=$2
nginx 规则同理 (IIS的去百度下哈 这里偷懒了)
之后更新网站,更新缓存

6.这里还有一个问题 非常重要,有朋友测试之后发现url存在乱码
解决方法:
1.修改$infos = $keyword_data_db->listinfo($where, 'idDESC',$page,$pagesize,"","9",$urlrule,array("tag"=>urlencode($tag)));
将'tag'=>urlencode($tag)))修改成将'tag'=>$tag))
2.修改{APP_PATH}tag-{urlencode($keyword)}-1.html
将urlencode($keyword)修改为$keyword
这样的话 tag标签就中文显示了
但是可能还会遇到这个问题:
若标签为英文,则没有问题;若标签为中文的话,点击标签时会呈现找不到此关键字的提示,
原因是转码问题
解决的办法:打开phpcms/modules/content/tag.php 文件
找到 $tag = safe_replace(addslashes($_GET['tag']));
在其正下方添加 $tag = iconv("utf-8","gb2312",$tag); //转编码

(注意:这里需要是正下方 放到其他位置不起作用,还是会提示找不到此关键词)
若是还不可,不防试着调换"gb2312","utf-8"的位置。
url链接带中文对搜索引擎是不是友好,这个还没有明确的定论,主要是其他搜索引擎对中文支持的不是很好 ,所以慎重选择 ,如无需链接带中文 不进行第6步操作即可。