公司醫院網站用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 後面 添加上
-
-
-
- $aftertwo = $categorydir[strlen($categorydir)-1]!='/'?$categorydir.'/':$categorydir;
-
- if(strstr($urlrule,'{$aftertwo}')!='')
- {
-
- preg_match_all('/([\w!@#$%^&*()_+\-]+)*\//i',$aftertwo,$asall); //正則匹配規則各級目錄名
-
- $arrnum = count($asall[0]);
-
- if($arrnum>2)
- {
-
- 匹配後得到的數組排序是 0=>1級, 0=>2級, 0=>3級, 0=>4級,在此應獲取倒數第二級
-
-
-
-
這樣就達到的 去掉/bzdh/這一級目錄的目的。(這裏也同樣適用於內容頁show 的url規則,只要把這句放到show函數下相應位置即可)。
後臺添加新的url規則的時候 注意下 {$aftertwo} 最後會有一個”/“ 所以寫的時候可以這樣寫新的規則 :{$aftertwo}index.{$fileext}|{$aftertwo}{$page}.{$fileext},index前面可以不用像系統原先那樣加個斜槓了!
測試時 可以先不用生成 只須更新全站url規則 來查看有沒有達到你想要的效果就行~~