公司医院网站用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规则 来查看有没有达到你想要的效果就行~~