phpcms2008 url規則修改及添加變量(1)

 公司醫院網站用phpcms2008建站的欄目結構 一般分爲兩大類醫院導航與病種導航作爲一級欄目,然後二級欄目放相關子欄目。這樣結構比較清晰,後續調用也比較方便,不會很亂。  

  但這樣做 系統本身的url規則 數量 不夠滿足需要,所以這裏要涉及改寫及添加新的url規則變量。
  下面記錄一個公司醫院網站的例子:
  欄目結構 是這樣的:
-醫院導航(yydh)
----醫院介紹
----醫院新聞(yyxw)
…… ……
 
-病種導航(bzdh)
----大病種1(dbz1)
--------子病種1(zbz1)
--------子病種2
--------子病種3
----大病種2
----大病種3
對於 category 欄目頁規則一般常用下面兩個:
1. news/2_1.html   意義是生成欄目目錄在根目錄下  :web/yyxw/
2. it/product/2.html  意義是生成全部父目錄+本級目錄 : web/yydh/yyxw/
醫院新聞 這類欄目用 news/2_1.html 這套url規則 直接生成在根目錄下 公司用的比較多 爲的是利於網站優化(大病種 欄目 也可以用這個)。
而對於子病種1  這種欄目用上面兩種規則 似乎都不太好 第1種好是好 但子病種很多的時候 會在根目錄下生成太多 不利於後臺管理 第二種 就會多生成一級父欄目 web/bzdh/dbz1/zbz1/  對優化似乎不太好。所以就想到把 /bzdh/  這一級目錄去掉,生成web/dbz1/zbz1/。怎麼去呢?方法如下:
 
include/url.class.php 裏有兩個函數  function category{}/function show{}裏,  在變量$categorydir,$urlrules 後面 添加上
 
  1. /*------------------------*/ 
  2. //$categorydir =“/bzdh/dbz1/zbz1/”; 1           先要獲取當前欄目的全級目錄 
  3.  
  4. $aftertwo = $categorydir[strlen($categorydir)-1]!='/'?$categorydir.'/':$categorydir
  5.          
  6. if(strstr($urlrule,'{$aftertwo}')!='')
  7.  
  8. preg_match_all('/([\w!@#$%^&*()_+\-]+)*\//i',$aftertwo,$asall); //正則匹配規則各級目錄名 
  9.  
  10. $arrnum = count($asall[0]); //獲取數組當中返回值的個數 
  11.  
  12. if($arrnum>2)
  13.  
  14. // $aftertwo = $asall[0][$arrnum-2];     ”zbz1/” 匹配後得到的數組排序是 0=>1級, 0=>2級, 0=>3級, 0=>4級,在此應獲取倒數第二級
  15. $aftertwo = $asall[0][$arrnum-2].$asall[0][$arrnum-1];   //"dbz1/zbz1/" 
  16. } 
  17. } 
  18. /*-----------------------*/ 
 
這樣就達到的 去掉/bzdh/這一級目錄的目的。(這裏也同樣適用於內容頁show 的url規則,只要把這句放到show函數下相應位置即可)。
 
後臺添加新的url規則的時候 注意下 {$aftertwo}  最後會有一個”/“ 所以寫的時候可以這樣寫新的規則 :{$aftertwo}index.{$fileext}|{$aftertwo}{$page}.{$fileext},index前面可以不用像系統原先那樣加個斜槓了!
 
測試時  可以先不用生成 只須更新全站url規則 來查看有沒有達到你想要的效果就行~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章