PHPcmsV9栏目伪静态的修改方法(支持自定义目录名),官方程序默认伪静态是不支持自定义栏目名的,所以今天就做了以下修改,让其支持!

首先看urlrewrite的规则,这个是IIS6下的,其它环境下的规则自己转换下

XML/HTML代码
RewriteRule /phpcms/(.*)(.*)/ /phpcms/index\.php\?m=contentc=indexa=listscategorydir=$1catdir=$2
RewriteRule /phpcms/(.*)(.*)/([0-9]+)/ /phpcms/index\.php\?m=contentc=indexa=listscategorydir=$1catdir=$2page=$3
1、打开phpcms\modules\content目录下的index.php找到 public function lists() {,将$catid = intval($_GET['catid']);替换成:

PHP代码
if(isset ($_GET['catid'])){
$catid= intval($_GET['catid']);
}else{
$catdir=$_GET['catdir'];
if($catdir==""){
$catdir=$_GET['categorydir'];
}
$s=$this->_getCategoryId($catdir);
$catid=$s[0][catid];
}
并且在最后的}?> 前添加:

PHP代码
/**
*根据栏目名获得ID
* @param <type> $catdir
*/
function_getCategoryId($catdir){
$this->category_db = pc_base::load_model('category_model');
$result= $this->category_db->select(array('catdir'=>$catdir));
// print_r($result);
return$result;
}
2、打开phpcms\modules\content\classes目录中的url.class.php,找到
if (!$setting['ishtml']) { //如果不生成静态
将下面的:

PHP代码
$url= str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);
if(strpos($urls, '\\')!==false) {
$url = APP_PATH.str_replace('\\', '/', $urls);
}
替换成:

PHP代码
$domain_dir= '';
if(strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {
if(preg_match('/^((http|https):\/\/)?([^\/]+)/i', $category['url'], $matches)) {
$match_url= $matches[0];
$url= $match_url.'/';
}
$db= pc_base::load_model('category_model');
$r= $db->get_one(array('url'=>$url), '`catid`');
if($r) $domain_dir= $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';
}
$categorydir= $this->get_categorydir($catid);
$catdir= $category['catdir'];
$year= date('Y',$time);
$month= date('m',$time);
$day= date('d',$time);
//echo $catdir;
$urls= str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}'
,'{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);
// echo $urls."<br>";
if(strpos($urls, '\\')!==false) {
$urls = APP_PATH.str_replace('\\', '/', $urls);
}
$url= $domain_dir.$urls;
3、后台URL规则中添加:

XML/HTML代码
url示例:1/
url规则:{$categorydir}{$catdir}/|{$categorydir}{$catdir}/{$page}/
更新栏目缓存就OK了。

收藏于 2012-09-24

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。