phpcms v9把分类文件伪静态目录例子
发布时间:2019-12-16 11:14:23作者:admin点击:
URL规则部分,使用phpcms的大多是知道的,就不再赘述。如果需要支持自定义文件名的,需要去看看phpcms v9自定义HTML文件名一文。下面就着重将Web服务器重写链接这一项。
phpcms v9怎么目录式伪静态
首先看urlrewrite的规则,这个是Nginx下的,其它环境下的规则自己转换下。
rewrite ^/([a-z]+)/$ /index.php?m=content&c=index&a=lists&catdir=$1 last;
rewrite ^/([a-z]+)/index_(\d+)\.html$ /index.php?m=content&c=index&a=lists&catdir=$1&page=$2 last;
rewrite ^/([a-z]+)/([a-z0-9-]+)\.html$ /index.php?m=content&c=index&a=show&catdir=$1&prefix=$2 last;
rewrite ^/([a-z]+)/([a-z0-9-]+)_(\d+)\.html$ /index.php?m=content&c=index&a=show&catdir=$1&prefix=$2&page=$3 last;
这个Nginx规则就是把后面的链接重写为前面的链接形式的。所以接下来需要做的就是让后面的链接能够访问到正确的页面。phpcms v9默认是无法访问到正确页面的,因为缺少必要的参数。下面就对phpcms v9进行修改。
1、打开phpcms\modules\content目录下的index.php找到 public function lists() {,将$catid = intval($_GET['catid']);替换成:
if(isset ($_GET['catid'])){
$catid = intval($_GET['catid']);
}else{
$catid=$this->_getCategoryId($_GET['catdir']);
}
并且在最后的}?> 前添加:
private function _getCategoryId($catdir){
if(!strpos($catdir,'/')) {
$dirname = $catdir;
}else {
$dirname = end(explode('/',$catdir));
}
$this->category_db = pc_base::load_model('category_model');
$result = $this->category_db->get_one(array('catdir'=>$dirname));
return $result['catid'];
}
这段代码的作用就是判断参数是否catdir,栏目自定义目录名,如果是目录名则根据目录名得到对应的catid,从而顺利得到栏目页。理解了自定义目录的伪静态方法之后,自定义文件名的伪静态也就可以类似解决。
2、打开phpcms\modules\content目录下的index.php找到 public function show() {,将
$catid = intval($_GET['catid']);
$id = intval($_GET['id']);
替换成:
if(isset ($_GET['catid'])){
$catid = intval($_GET['catid']);
}else{
$catid=$this->_getCategoryId($_GET['catdir']);
}
if(isset($_GET['id'])){
$id = intval($_GET['id']);
}else{
$id = $this->_getPrefixId($_GET['catdir'],$_GET['prefix']);
}
跟上面一样,还需要加上判断出文章id的函数,函数如下:
- 上一篇 : PHPCMS V9关联字段的添加教程
- 下一篇 : 解决Discuz论坛使用QQ互联提示redirect uri