首先,说一点我的经验,再谈谈其它的对代码的理解或是其余什么:web
这套系统是一套功能齐全、很是好用的便于快捷开发的系统,由于很是值得学习(一位大神推荐的,其余几位大神也有同感,我是菜鸟),先说说咱们应该怎么理解这套系统吧:a.首先,看系统后台管理使用文档(附连接:http://wenku.baidu.com/link?url=Iw0oxEojz0vjiTf5aDWhjrnJkWO3goujv_j_d-EHmAHmedvV6ClU9IPQ4N4-MuB25zE7NsUAJb_H4nwvgtYPGMQiKJFoRxgBO74IFACYnMG);b.其次,看架构分析文档(附连接:http://wenku.baidu.com/link?url=G4wDrVOqUXgT9q4lFt8MqvBn29fLtW99mtphlolshl84EdLRTso5x1G8AjcKAm5Oi-GrJBFXfctcRw9lnZqLyB2VM6rdERp4pGvNRz3GXI7);若是你以为以上的差很少了,看到这里,我相信你对系统的运行机制等等也开始有必定的了解;c.而后,看软件文档;(附加连接:http://www.dtcms.net/help/11.aspx),看如何实现模板、模型的添加;至此,你对全台的一次操做应该都有些了解了;d,最后,若是你想了几后台代码的话:看看“软件文档的基本语法(http://www.dtcms.net/help/8.aspx)和标签说明(http://www.dtcms.net/help/11.aspx)”,至此;你能够开始看 后台代码了(小小建议:了解过程的话最好多大“断点”,逐过程或逐语句运行。)正则表达式
研究这套cms很重要的一个文件是:urls.config;它直接规定了页面的模板页、后台管理页(要继承页面),页面类型和url重写(url重写,看的真蛋疼,欺骗了我多少回,使代码难度大大加大了);架构
有大神说,只有站在巨人的肩膀上才看的更加高远;当我开始研究DTcms的源码时,我才对这句话有了深入的理解,首先看看下面的我以为很牛B的代码,我费了很久很久才弄懂的!:学习
方法:url
protected string linkurl(string _key, params object[] _params)
{
Hashtable ht = new BLL.url_rewrite().GetList();
Model.url_rewrite model = ht[_key] as Model.url_rewrite;
if (model == null)
{
return "";
}
try
{
string _result = string.Empty;
string _rewriteurl = string.Format(model.path, _params);
switch (config.staticstatus)
{
case 1: //URL重写
_result = config.webpath + _rewriteurl;
break;
case 2: //全静态
_rewriteurl = _rewriteurl.Substring(0, _rewriteurl.LastIndexOf(".") + 1);
_result = config.webpath + DTKeys.DIRECTORY_REWRITE_HTML + "/" + _rewriteurl + config.staticextension;
break;
default: //不开启
string _originalurl = model.page;
if (!string.IsNullOrEmpty(model.querystring))
{
_originalurl = model.page + "?" + Regex.Replace(_rewriteurl, model.pattern, model.querystring, RegexOptions.None | RegexOptions.IgnoreCase);
}
_result = config.webpath + _originalurl;
break;
}
return _result;
}
catch
{
return "";
}
}.net
调用: <div class="nav">
<ul>
<li><a href="<%linkurl("index","")%>">首 页</a></li>
<li><a href="<%linkurl("article_list","")%>">新闻资讯</a></li>
<li><a href="<%linkurl("goods_list","")%>">商品展现</a></li>
<li><a href="<%linkurl("photo_list","")%>">图片分享</a></li>
<li><a href="<%linkurl("down_list","")%>">资源下载</a></li>
<li><a href="<%linkurl("feedback","")%>">在线留言</a></li>
<li><a href="<%linkurl("content","about")%>">关于咱们</a></li>
<li><a href="<%linkurl("content","contact")%>">联系咱们</a></li>
</ul>
</div>orm
注释:这段牛B的代码就是(其实就是对应了url.config文件):首先以哈希表获取url.config配置文件中的全部信息,而后以Key(对应配置文件中的name属性)来筛选,获取某一条,并将它转化为一个url_rewrite实体(这个太TMD的牛B了!!!!!);若是获取为非空的话,使用format方法来拼写从定向路径,并返回。(我花了很久很久才懂的啊,这个代码真是太牛B了);继承
碰到的难点问题:图片
正则表达式不过关,不少涉及到这个的不理解;资源
url重写,还不熟;
以上两个方面让我很吃亏!!!!!
备注:这套系统的url重写很厉害,用的不少,不要轻易相信其余的跳转地址,对理解代码很不利。
最后发表一下感慨吧:研究这套系统的源代码,颠覆了我以前的所学!