虚位以待(AD)
虚位以待(AD)
首页 > CMS教程 > phpcms > phpcms关于url路由在二次开发中的使用方法介绍-实现泛解析

phpcms关于url路由在二次开发中的使用方法介绍-实现泛解析
类别:phpcms   作者:码皇   来源:互联网   点击:

首先,路由是负责将用户请求映射到特定的 MVC 控制器操作 v9默认的路由文件是 cachesconfigsroute php ,默认路由如下:复制代码代码如下: default =>array( m => content , c => index , a => init ) ,魔客吧

首先,路由是负责将用户请求映射到特定的 MVC 控制器操作.v9默认的路由文件是 cachesconfigsroute.php ,默认路由如下:


复制代码 代码如下:
'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init')

default是默认路由,在没有任何匹配的情况下,将映射到content模块index文件的init方法.

我们再来看下路由是在哪里被处理的.打开phpcmslibsclassesparam.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');

这里读取路由配置,根据常量 SITE_URL 查找是否存在路由配置,如果存在就加载,否则就加载默认的default配置.

SITE_URL这个常量是做什么的呢?看看他的定义:


复制代码 代码如下:
//当前访问的主机名
define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));

也就是我们访问的域名,比如 pic.jb51.net 或者 baike.jb51.net 又或者 bbs.jb51.net,不带http.

那么,比如我们有一个域名 bbs.jb51.net ,他的动态访问地址是 m=bbs&c=index&a=init .那么我们在做过域名绑定到v9后,访问 bbs.jb51.net 就能定位到 m=bbs&c=index&a=init ,这时候就要依靠url路由.因此定义如下路由:


复制代码 代码如下:
'bbs.jb51.net'=>array('m'=>'bbs', 'c'=>'index', 'a'=>'init'),

一个完整的url路由功能就实现了.利用此功能,可以实现泛解析到不同模块,不同栏目等等.
比如给你的v9黄页模块做一个 yp.phpcms.cn 路由到 m=yp&c=index&a=init .
这样每一个模块都是一个拥有二级域名的子站了,而同时利用v9的数据表分离功能,可以实现一些较大的应用.

希望大家有好东西一起分享,诚招女性网站(prbr2百度收录2k以上)友链.谢谢.
结尾国际惯例,回复可见.
分享一个网站的泛解析处理方法:
路由如下:


复制代码 代码如下:
/**
* 路由配置文件
* 默认配置为default如下:
* 'default'=>array(
* 'm'=>'phpcms',
* 'c'=>'index',
* 'a'=>'init',
* 'data'=>array(
* 'POST'=>array(
* 'catid'=>1
* ),
* 'GET'=>array(
* 'contentid'=>1
* )
* )
* )
* 基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。
* data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。在程序中您可以使用$_POST['catid']来得到data下面POST中的数组的值。
* data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如:
* 外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。
*/
/*二级域名泛解析的配置,包括以下几种
项目http://xiangmu.jb51.net/
地区http://dq.jb51.net/
医院http://yiyuan.jb51.net/
*/

switch($GLOBALS['domain']){
case 'www':
$array = array('default'=>array('m'=>'content','c'=>'index','a'=>'init'));
break;

default:
$array = array(SITE_URL=>domain( $GLOBALS['domain'] ) );
break;

}

return $array;

其中函数 domain定义如下:


复制代码 代码如下:
//二级域名泛解析后的处理
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');
}
}


function parse_domain($array){

switch($array['type']){

case '3833'://手术项目,也即栏目
$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;

case '3834'://城市地区
$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));
$GLOBALS['cityid'] = $array['keyid'];
break;


case '3835'://整形医院
$newarr = array('m'=>'yp','c'=>'com_index','a'=>'init','data'=>array('GET'=>array('userid'=>$array['keyid'])));
$GLOBALS['hospitalid'] = $array['keyid'];
break;

}
return $newarr;

}

结合了联动菜单的地区,权当是抛砖引玉了.
尤其注意


复制代码 代码如下:
$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));

这里的定义方式,数据的格式一定要正确.

魔客吧温馨提示:如果你正在寻找优秀的phpcms模板,那你可以到魔客吧的 phpcms模板 频道看看,相信一定有你喜欢的!

分享到 更多 <script type="text/javascript" id="bdshell_js"></script><script type="text/javascript">document.getElementById("bdshell_js").src = "http://share.baidu.com/static/js/shell_v2.js?cdnversion=" + new Date().getHours();</script> 本文地址:http://www.moke8.com/article-22364-1.html
文章标题:phpcms关于url路由在二次开发中的使用方法介绍-实现泛解析 收藏邀请 最新分享资源 包装材料生产线设备织梦模板

包装材料生产线设备织梦模板

dedecms模板 by moke 响应式淘宝美工摄影类织梦模板

响应式淘宝美工摄影类织梦模板

dedecms模板 by moke 响应式金属制品dedecms模板

响应式金属制品dedecms模板

dedecms模板 by moke 响应式无人机电子产品dede模板

响应式无人机电子产品dede模板

dedecms模板 by moke

最新评论

验证码 换一个 <script type="text/javascript" reload="1">updateseccode('SqZHh7L0');</script>

相关分类

  • discuz教程
  • discuzx教程
  • phpwind教程
  • dedecms教程
  • phpcms教程
  • wordpress教程
  • ecshop教程
  • php168教程
  • shopex教程
  • 帝国cms教程

精品推荐

中英双语响应式电子企业织梦模板

精华 中英双语响应式电子企业织梦模板

dedecms模板 by moke

极品资源

高端建筑装饰带手机版十配色织梦模板

极品 高端建筑装饰带手机版十配色织梦模板

dedecms模板 by moke

原创模板

多配色创意metro风格企业

魔币 多配色创意metro风格企业

下载排行

  • 01包装材料生产线设备织梦模板

资源分类

企业网站模板 企业网站源码 个人网站模板 个人网页模板 手机wap网站 门户网站模板 商业源码 淘宝客程序 html5网站 网站后台模板 html网页模板 学校网站模板 <script type="text/javascript">var cookieLogin = Ajax("TEXT");cookieLogin.get("connect.php?mod=check&op=cookie", function() {});</script><script type="text/javascript">_attachEvent(window, 'load', getForbiddenFormula, document);function getForbiddenFormula() {var toGetForbiddenFormulaFIds = function () {ajaxget('plugin.php?id=cloudsearch&formhash=5f310f1d');};var a = document.body.getElementsByTagName('a');for(var i = 0;i < a.length;i++){if(a[i].getAttribute('sc')) {a[i].setAttribute('mid', hash(a[i].href));a[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}var btn = document.body.getElementsByTagName('button');for(var i = 0;i < btn.length;i++){if(btn[i].getAttribute('sc')) {btn[i].setAttribute('mid', hash(btn[i].id));btn[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}}</script>

联系我们 | 关于我们 | 招商加盟 | 版权声明 | 帮助中心 | 广告服务 | 网站地图

欢迎浏览魔客吧提供的 phpcms关于url路由在二次开发中的使用方法介绍-实现泛解析 信息,若本站中的信息侵犯了您的权益,请与本站管理员联系

Copyright @ 2010-2015 魔客吧 版权所有 蜀ICP备09014119号 川公网安备51050202000165号   <script type="text/javascript" src="http://tcss.qq.com/ping.js?v=1VERHASH" charset="utf-8"></script><script type="text/javascript" reload="1">pgvMain({"discuzParams":{"r2":"5238379","ui":0,"rt":"portal","pn":1,"qq":"000"},"extraParams":""});</script>

积分 0, 距离下一级还需 积分 <script type="text/javascript">_attachEvent(window, 'scroll', function(){showTopLink();});</script><script>(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s);})();</script> <script type="text/javascript"> var tipsinfo = '5238379|X2.5|0.6||0||0|7|1526822254|cf5e847edf44266426717c5bf1f05b3c|2'; </script> <script src="http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1" type="text/javascript" charset="UTF-8"></script><script type="text/javascript" src="https://idm-su.baidu.com/su.js"></script>
相关热词搜索: phpcms关于url路由在二次开发中的使用方法