首先,說一點我的經驗,再談談其它的對代碼的理解或是其餘什麼: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重寫很厲害,用的不少,不要輕易相信其餘的跳轉地址,對理解代碼很不利。
最後發表一下感慨吧:研究這套系統的源代碼,顛覆了我以前的所學!