phpcms v9 欄目偽靜態完全自定義為欄目英文目錄名


  • 1,后台增加url規則,增加后.導航上,或分頁號上,會自動替換為靜態的樣式.類似www.abc.com/news/2/ 2表示頁碼  
  • phpcms v9 的后台擴展,url規則,添加兩個規則,  
  •   
  • 一個是名稱為category的規則,規則的前面的斜線可以去掉,不過可能影響分頁問題   
  • /{$catdir}/|/{$catdir}/{$page}/  
  • url示例為 www.abc.com/news/  
  • 一個是名稱為show規則  
  • {$catdir}/{$id}.html|{$catdir}/{$id}_{$page}.html  
  • 示例為www.abc.com/news/99.html  
  •   
  •   
  •   
  • 然后,找到想偽靜態的欄目,修改.生成html設置,生成Html全設置為否,url規則選擇自己剛才設置的.保存,  
  •   
  • 最后更新欄目緩存及批量更新url,不更新無效  
  •   
  • 2,如果為apache的服務器空間,偽靜態規則如下,注意,要保存在.htaccess 文件中,並上傳到網站根目錄中,其它規則自己轉換  
  •   
  •   
  • RewriteEngine on  
  • #靜態文件以及API目錄不需要偽靜態  
  • RewriteRule ^(statics|api|uploadfile)(.*) - [L]  
  • #欄目頁  
  • RewriteRule ^([0-9A-Za-z_]*)$ index.php?m=content&c=index&a=lists&catdir=$1  
  • RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1  
  • RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2  
  • RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)/$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2  
  • #上面欄目分頁,是完全的字母加數字的形式,如www.abc.com/news/2 ,后面不帶其它字符,或加一個/字符,如果服務器偽靜態匹配到了"域名/字母/數字/"的組合,則會自動跳轉到index.php?m=content&c=index&a=lists&catdir=$1&page=$2這個頁面中.所以.前面的規則不可重復,否則會錯亂.  
  •   
  • #內容頁  
  • RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)\.html$ index.php?m=content&c=index&a=show&catdir=$1&id=$2  
  •   
  •   
  • 3,文件,phpcms\phpcms\modules\content\index.php中  
  • 搜索  
  • $catid = intval($_GET['catid']);  
  • 一共兩處,修改為  
  •   
  •  if(isset ($_GET['catid'])){     
  •                     $catid = intval($_GET['catid']);     
  •                 }else{     
  •                     $catdir=$_GET['catdir'];     
  •                     $s=$this->_getCategoryId($catdir);     
  •                     $catid=$s[0][catid];                        
  •                 }   
  •                   
  •                   
  • 然后,在最下面  
  • } 這個 大括號的前面增加一個函數,如下  
  •   
  •   
  •  protected  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;     
  •          }   
  •   
  •            
  •            
  •            
  • 4, 打開phpcms\modules\content\classes\url.class.php,找到  
  •   if (!$setting['ishtml']) { //如果不生成靜態  
  •   將下面的:  
  •   
  •   
  • $url = str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);     
  •             if (strpos($urls, '\\')!==false) {    
  •                     $url = APP_PATH.str_replace('\\', '/', $urls);     
  •             }    
  •               
  •               
  •               
  •             整體替換為  
  •               
  •             $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;  
  •   
  •   
  •  

  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM