在之前分享的Phpcms V9全站伪静态设置方法中,具体讲解了PC v9具体的为静态设置详细步骤,在这里,再次分享关于如何在模块中使用伪静态,比如评论伪静态,tag伪静态等方面的设置方法。
1、首先在后台->扩展->url规则里添加一个新的规则用于评论模块
比如用这个规则{$commentid}-{$page}.html
添加完成后记好前面的id号,比如31。
2、下面我也说过了,本来PC标签支持urlrule呢,后来不支持了,只好改代码了,于是打开phpcms/modules/comment/index.php找到include template('comment', 'list');
在它上面添加几行用于读取urlrule和从评论表中调用评论数据,对了,评论表是带分表的
/**/
$page = intval($_GET['page']);
$page = max($page,1);
$urlrules = getcache('urlrules','commons');
$urlrule = $urlrules[31];//调用url规则
$pagesize = 10; //分页大小
$comment_db = pc_base::load_model('comment_model');
$comment_data_db = pc_base::load_model('comment_data_model');
$comment = $comment_db->get_one(array('commentid'=>$commentid, 'siteid'=>$siteid));
if ($comment){
$comment_data_db->table_name($comment['tableid']);
$comment_info = $comment_data_db->listinfo(Array('commentid'=>$commentid,'status'=>1) , 'id desc', $page ,$pagesize,'','10',$urlrule,Array('commentid'=>$commentid));
$pages = $comment_data_db->pages;
}
/**/
3、下面就该改模版了,改模版其实就是改一下那个pc标签,只留下循环那里就可以了,就是把那个调用评论数据的标签改改。
去掉{pc:comment action="lists" commentid="$commentid" siteid="$siteid" page="$_GET[page]" hot="$hot" ........和它对应的那个{/pc}
然后改循环那里{loop $data $r}改成{loop $comment_info $r}
ok~改好了~~o(∩_∩)o~
对了还有.htaccess文件要改,windows的是httpd.ini
每次改这个我都是靠蒙....对.htaccess的语法规则真不不太懂
RewriteRule ^content_(.*)-([0-9]+).html index.php?m=comment&c=index&a=init&commentid=content_$1&page=$2
嘿嘿~这个RewriteRule随便写的,不过凑活着能用
给个网址看看吧
不过我没url的权限,大家知道怎么看吧
phpcms。topone。me/content_9-1-1-2.html
没评论出错的问题改好了,重新修改代码就行了
下面说tag的伪静态
phpcms/modules/content/tag.php
$total = $this->db->number;这一行往上修改$siteid = $this->categorys[$catid]['siteid'];
$siteurl = siteurl($siteid);
$this->db->set_model($modelid);
$page = $_GET['page'];
$urlrules = getcache('urlrules','commons');
$urlrule = $urlrules[32];//调用url规则
$datas = $infos = array();
$infos = $this->db->listinfo("`keywords` LIKE '%$tag%'",'id DESC',$page,25,'','9',$urlrule,Array('catid'=>$catid,'tag'=>urlencode($tag)));
当然,32是后台扩展里加的url规则
tag_{$catid}_{$tag}_{$page}.html
.htaccess
cmsyou.com/tag_9_测试_1.html
一开始没考虑中文编码的问题,结果好像GBK编码下翻页就出错了,幸亏 Anchorite同学发现了,加个urlencode给中文的标签编码一下就ok了
在第一页点击上一页出现0的问题的两种解决方法:
第一种就是将pages里的内容替换一下,{str_replace("-1-0.html", "-1-1.html", $pages)}
http://bbs.phpcms.cn/redirect.php?goto=findpost&ptid=272432&pid=1518669&fromuid=53612
第二种就是修改分页函数
http://bbs.phpcms.cn/redirect.php?goto=findpost&ptid=272432&pid=1518645&fromuid=53612
任选一种即可,当然,修改代码记得备份,要养成随时备份的好习惯。
其实以上的修改都是在listinfo支持伪静态规则的基础上来修改的,熟练使用listinfo,就能在phpcms的任何页面实现伪静态分页了。
点击加载更多