phpcms關(guān)于url路由在二次開(kāi)發(fā)中的使用方法介紹-實(shí)現(xiàn)泛解析
首先,路由是負(fù)責(zé)將用戶(hù)請(qǐng)求映射到特定的 MVC 控制器操作.v9默認(rèn)的路由文件是 caches\configs\route.php ,默認(rèn)路由如下:
'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init')
default是默認(rèn)路由,在沒(méi)有任何匹配的情況下,將映射到content模塊index文件的init方法.
我們?cè)賮?lái)看下路由是在哪里被處理的.打開(kāi)\phpcms\libs\classes\param.class.php ,找到下面一句代碼:
$this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', 'default');
這里讀取路由配置,根據(jù)常量 SITE_URL 查找是否存在路由配置,如果存在就加載,否則就加載默認(rèn)的default配置.
SITE_URL這個(gè)常量是做什么的呢?看看他的定義:
//當(dāng)前訪(fǎng)問(wèn)的主機(jī)名
define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));
也就是我們?cè)L問(wèn)的域名,比如 pic.jb51.net 或者 baike.jb51.net 又或者 bbs.jb51.net,不帶http.
那么,比如我們有一個(gè)域名 bbs.jb51.net ,他的動(dòng)態(tài)訪(fǎng)問(wèn)地址是 m=bbs&c=index&a=init .那么我們?cè)谧鲞^(guò)域名綁定到v9后,訪(fǎng)問(wèn) bbs.jb51.net 就能定位到 m=bbs&c=index&a=init ,這時(shí)候就要依靠url路由.因此定義如下路由:
'bbs.jb51.net'=>array('m'=>'bbs', 'c'=>'index', 'a'=>'init'),
一個(gè)完整的url路由功能就實(shí)現(xiàn)了.利用此功能,可以實(shí)現(xiàn)泛解析到不同模塊,不同欄目等等.
比如給你的v9黃頁(yè)模塊做一個(gè) yp.phpcms.cn 路由到 m=yp&c=index&a=init .
這樣每一個(gè)模塊都是一個(gè)擁有二級(jí)域名的子站了,而同時(shí)利用v9的數(shù)據(jù)表分離功能,可以實(shí)現(xiàn)一些較大的應(yīng)用.
希望大家有好東西一起分享,誠(chéng)招女性網(wǎng)站(prbr2百度收錄2k以上)友鏈.謝謝.
結(jié)尾國(guó)際慣例,回復(fù)可見(jiàn).
分享一個(gè)網(wǎng)站的泛解析處理方法:
路由如下:
<?php
/**
* 路由配置文件
* 默認(rèn)配置為default如下:
* 'default'=>array(
* 'm'=>'phpcms',
* 'c'=>'index',
* 'a'=>'init',
* 'data'=>array(
* 'POST'=>array(
* 'catid'=>1
* ),
* 'GET'=>array(
* 'contentid'=>1
* )
* )
* )
* 基中“m”為模型,“c”為控制器,“a”為事件,“data”為其他附加參數(shù)。
* data為一個(gè)二維數(shù)組,可設(shè)置POST和GET的默認(rèn)參數(shù)。POST和GET分別對(duì)應(yīng)PHP中的$_POST和$_GET兩個(gè)超全局變量。在程序中您可以使用$_POST['catid']來(lái)得到data下面POST中的數(shù)組的值。
* data中的所設(shè)置的參數(shù)等級(jí)比較低。如果外部程序有提交相同的名字的變量,將會(huì)覆蓋配置文件中所設(shè)置的值。如:
* 外部程序POST了一個(gè)變量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所設(shè)置的1。
*/
/*二級(jí)域名泛解析的配置,包括以下幾種
項(xiàng)目<a >http://xiangmu.jb51.net/</a>
地區(qū)<a >http://dq.jb51.net/</a>
醫(yī)院<a >http://yiyuan.jb51.net/</a>
*/</p> <p> switch($GLOBALS['domain']){
case 'www':
$array = array('default'=>array('m'=>'content','c'=>'index','a'=>'init'));
break;</p> <p> default:
$array = array(SITE_URL=>domain( $GLOBALS['domain'] ) );
break;</p> <p> }</p> <p> return $array;
其中函數(shù) domain定義如下:
//二級(jí)域名泛解析后的處理
function domain(){
$domain = getcache('domain','commons');
$domain_data = $domain[$GLOBALS['domain']];
if( !empty($domain_data) ){
return parse_domain($domain_data) ;
}
else{
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
$db = pc_base::load_model('http404_model');
$db->add();
echo file_get_contents(PHPCMS_PATH.'404.htm');
}
}</p> <p>
function parse_domain($array){</p> <p> switch($array['type']){
case '3833'://手術(shù)項(xiàng)目,也即欄目
$catid = $array['keyid'];
$id = $_GET['id'];
$GET = $id ? array('id'=>$id,'catid'=>$catid) : array('catid'=>$catid);
$newarr = array('m'=>'content','c'=>'index','a'=>$id ? 'show': 'lists','data'=>array('GET'=>$GET));
$GLOBALS['catid'] = $catid;
break;</p> <p> case '3834'://城市地區(qū)
$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));
$GLOBALS['cityid'] = $array['keyid'];
break;</p> <p>
case '3835'://整形醫(yī)院
$newarr = array('m'=>'yp','c'=>'com_index','a'=>'init','data'=>array('GET'=>array('userid'=>$array['keyid'])));
$GLOBALS['hospitalid'] = $array['keyid'];
break;
}
return $newarr;</p> <p> }
結(jié)合了聯(lián)動(dòng)菜單的地區(qū),權(quán)當(dāng)是拋磚引玉了.
尤其注意
$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));
這里的定義方式,數(shù)據(jù)的格式一定要正確.
上一篇:完美解決phpcms圖片太大撐破表格圖片自適應(yīng)圖片按比例縮小
欄 目:phpcms
本文標(biāo)題:phpcms關(guān)于url路由在二次開(kāi)發(fā)中的使用方法介紹-實(shí)現(xiàn)泛解析
本文地址:http://mengdiqiu.com.cn/a1/phpcms/9777.html
您可能感興趣的文章
- 01-10phpcms常見(jiàn)問(wèn)題解答
- 01-10phpcms語(yǔ)法規(guī)則
- 01-10PHPCMS網(wǎng)站轉(zhuǎn)移空間教程
- 01-10PHPCMS2008 SP4 心情排行指數(shù)不顯示的解決辦法
- 01-10phpcms頻道首頁(yè)調(diào)用所有一級(jí)欄目及二級(jí)欄目
- 01-10phpcms標(biāo)簽?zāi)0寮皩?zhuān)題模板的制作
- 01-10PHPCMS系統(tǒng)自帶標(biāo)簽說(shuō)明
- 01-10為PHPCMS 2008 編輯器增加常用中文字體方法
- 01-10PHPcms 2008 注冊(cè)選擇模型關(guān)閉后,注冊(cè)不能自動(dòng)登錄的問(wèn)題
- 01-10phpcms模仿QQ和MSN消息提示的效果


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10phpcms常見(jiàn)問(wèn)題解答
- 01-10phpcms語(yǔ)法規(guī)則
- 01-10PHPCMS2008 SP4 心情排行指數(shù)不顯示的解
- 01-10PHPCMS網(wǎng)站轉(zhuǎn)移空間教程
- 01-10PHPCMS系統(tǒng)自帶標(biāo)簽說(shuō)明
- 01-10phpcms標(biāo)簽?zāi)0寮皩?zhuān)題模板的制作
- 01-10phpcms頻道首頁(yè)調(diào)用所有一級(jí)欄目及二
- 01-10PHPcms 2008 注冊(cè)選擇模型關(guān)閉后,注冊(cè)
- 01-10為PHPCMS 2008 編輯器增加常用中文字體
- 01-10phpcms模仿QQ和MSN消息提示的效果
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置