返回舊版| 微信建站| 我要建站 | 建站學習 | 加入收藏
PHPCMS當前位置:首頁 > cms教程 > 綜合cms > PHPCMS > 正文

PHPCMS V9自定義欄目偽靜態實現方法(列表頁/分頁/內容頁)

發布時間:2019-03-22 22:49:15   來源:   點擊:
1、打開phpcms\modules\content目錄下的index.php在最后的}?> 前添加:
  1. private function _getCategoryId($catdir){  
  2.                 if(!strpos($catdir,'/')) {  
  3.                         $dirname = $catdir;  
  4.                 }else {  
  5.                         $dirname = end(explode('/',$catdir));  
  6.                 }  
  7.                 $this->category_db = pc_base::load_model('category_model');  
  8.                 $result = $this->category_db->get_one(array('catdir'=>$dirname));  
  9.                 return $result['catid'];  
  10.         }  

增加一個方法,用于將`catdir`轉換為`catid`
然后在`show()`方法中,將獲取`catid`的語句修改,大概35行找到:
  1. $catid = intval($_GET['catid']  
改成:
  1. if(isset ($_GET['catid'])){  
  2.          $catid = intval($_GET['catid']);  
  3. }else{  
  4.           $catid=$this->_getCategoryId($_GET['dir']);  
  5. }  
然后在在lists()方法中找到207行,將獲取’catid’的語句修改
  1. $catid = $_GET[‘catid’] = intval($_GET[‘catid’]);  
改成:
  1. if(isset ($_GET['catid'])){  
  2.           $catid = intval($_GET['catid']);  
  3. }else{  
  4.            $catid=$this->_getCategoryId($_GET['dir']);  
  5. }  
然后找到大概260行:
  1. $GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;  
  2. $GLOBALS['URL_ARRAY']['catdir'] = $catdir;  
  3. $GLOBALS['URL_ARRAY']['catid'] = $catid;  
改成:
  1. $GLOBALS['URL_ARRAY']['categorydir'] = $parentdir;  
  2. $GLOBALS['URL_ARRAY']['catdir'] = $catdir;  
  3. $GLOBALS['URL_ARRAY']['catid'] = $catid;  

2、打開phpcms\modules\content\classes目錄中的url.class.php,找到

  1. if (!$setting[‘ishtml’]) { //如果不生成靜態  
將下面的:
  1. $url = str_replace(array('{$catid}''{$page}'), array($catid, $page), $urlrule);     
  2.             if (strpos($urls, '\\')!==false) {    
  3.                     $url = APP_PATH.str_replace('\\', '/', $urls);     
  4.             }  
改成:

  1. $domain_dir = '';     
  2.             if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {     
  3.                 if (preg_match('/^((http|https):\/\/)?([^\/]+)/i', $category['url'], $matches)) {     
  4.                     $match_url = $matches[0];     
  5.                     $url = $match_url.'/';     
  6.                 }     
  7.                 $db = pc_base::load_model('category_model');     
  8.                 $r = $db->get_one(array('url'=>$url), '`catid`');     
  9.    
  10.                 if($r) $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';     
  11.             }     
  12.             $categorydir = $this->get_categorydir($catid);     
  13.             $catdir = $category['catdir'];     
  14.             $year = date('Y',$time);     
  15.             $month = date('m',$time);     
  16.             $day = date('d',$time);     
  17.             //echo $catdir;     
  18.             $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);     
  19.                        // echo $urls."<br />";     
  20.                         if (strpos($urls, '\\')!==false) {    
  21.                     $urls = APP_PATH.str_replace('\\', '/', $urls);     
  22.             }     
  23.                         $url = $domain_dir.$urls;  

3、分頁問題處理 \phpcms\libs\functions\global.func.php
  1. /**  
  2.  * 返回分頁路徑  
  3.  *  
  4.  * @param $urlrule 分頁規則  
  5.  * @param $page 當前頁  
  6.  * @param $array 需要傳遞的數組,用于增加額外的方法  
  7.  * @return 完整的URL路徑  
  8.  */  
  9.    
  10. function pageurl($urlrule, $page, $array = array()) {  
  11.     if(strpos($urlrule, '~')) {  
  12.         $urlrules = explode('~', $urlrule);  
  13.         $urlrule = $page < 2 ? $urlrules[0] : $urlrules[1];  
  14.     }  
  15.     $findme = array('{$page}');  
  16.     $replaceme = array($page);  
  17.     if (is_array($array)) foreach ($array as $k=>$v) {  
  18.         $findme[] = '{$'.$k.'}';  
  19.         $replaceme[] = $v;  
  20.    
  21.     }  
  22.    
  23.     $url = str_replace($findme, $replaceme, $urlrule);  
  24.     $url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);  
  25.     if (!strstr($url,siteurl(get_siteid()))){  
  26.                 $url = siteurl(get_siteid()) . '/' . $url;  
  27.         }  
  28.     return $url;    
  29.    
  30. }  

(4)后臺增加偽靜態url規則

  1. URL規則欄目頁:{$categorydir}{$catdir}/|{$categorydir}{$catdir}/index_{$page}.html 
  2. URL規則內容頁: {$categorydir}{$catdir}/{$id}.html|{$categorydir}{$catdir}/{$id}_{$page}.html 
(5)增加偽靜態規則
.htaccess為例:
  1. RewriteEngine on  
  2. #靜態文件以及API目錄不需要偽靜態  
  3. RewriteRule ^(statics|api|uploadfile)(.*) – [L]  
  4. #內容頁  
  5. RewriteRule ^([0-9A-Za-z_/]*)/([0-9]+)\.html index.php?m=content&c=index&a=show&dir=$1&id=$2  
  6. RewriteRule ^([0-9A-Za-z_/]*)/([0-9]+)_([0-9]+)\.html index.php?m=content&c=index&a=show&dir=$1&id=$2&page=$3  
  7. #欄目頁  
  8. RewriteRule ^([0-9A-Za-z_/]*)/index_([1-9][0-9]*)\.html index.php?m=content&c=index&a=lists&dir=$1&page=$2  
  9. RewriteRule ^([0-9A-Za-z_/]*)/ index.php?m=content&c=index&a=lists&dir=$1  
相關欄目
熱門文章
最新圖文
評論排行
版權所有:鄭州騰石網絡科技有限公司 備案信息:豫ICP備18019117號
站長QQ:2863868475 業務合作咨詢:15137100750(同微信)
本站所有投放的廣告是有其他網站提供,不代表本站立場,同時網站首頁廣告位對外出租詳情咨詢本站站長!同時歡迎廣大站長加入個人建站團隊
  • 建站客服
  • CMS仿站
  • CMS學習
  • 技術交流群:336572814
棋牌app源码 飞艇冠军预测软件 香港开奖一肖一码期 吉林快三彩票走势图百度 组3组6刷流水 上海时时哪里买的 本港台开奖现埸直播开奖结果 老快3走势 4954321平特一肖 上海时时最快开奖直播 北京pk计划免费软件