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