這里說的“系統(tǒng)主頁”指的是當(dāng)我們進(jìn)入后臺(tái)后,看到的界面,為了方便大家理解,這里截取一張織夢(mèng)DEDECMS 系統(tǒng)主頁圖如下。
今天我們就對(duì)這個(gè)界面用到的php源碼和模板進(jìn)行分析,并對(duì)這個(gè)界面進(jìn)行修改。簡明扼要的說概括今天的目標(biāo):
1.分析源碼;2.修改界面
我們通過“如何查找織夢(mèng)DEDECMS 模板”這個(gè)教程,打到系統(tǒng)主頁界面(接下來直接用界面指系統(tǒng)主頁界面)對(duì)應(yīng)的php文件是:http://www.dedebase.com/dede/index_body.php,這個(gè)php文件,比較重要,因?yàn)樗沁@個(gè)界面的一個(gè)入口,所有你在這個(gè)界面看到的,能操作的都通過這個(gè)php文件來實(shí)現(xiàn)。
我們來分析一下這個(gè)php文件,首頁打開文件,最前面的一塊,就是本文下面的這六行代碼,前三行是引入文件,第四、五行是動(dòng)態(tài)定義以txt為后綴的文件,最后一行,是判斷第五行文件是不是存在,如果不存在就重新定義一個(gè)。
require(dirname(__FILE__).'/config.php');
require(DEDEINC.'/image.func.php');
require(DEDEINC.'/dedetag.class.php');
$defaultIcoFile = DEDEDATA.'/admin/quickmenu.txt';
$myIcoFile = DEDEDATA.'/admin/quickmenu-'.$cuserLogin->getUserID().'.txt';
if(!file_exists($myIcoFile)) $myIcoFile = $defaultIcoFile;
接下來織夢(mèng)給我們寫好了是“默認(rèn)主頁”,也就是引入,如下圖所示
織夢(mèng)用了一個(gè)if語句來判斷引入哪個(gè)文件,一般織夢(mèng)默認(rèn)是引用templets/index_body.htm這個(gè)模板的,除非以move-開頭的txt文件存在,而這個(gè)文件一般不存在的,若存在就引入模板templets/index_body_move.htm,用方框框起來的是引入必要的php文件,初始化和判斷等,這里不作多解釋。
現(xiàn)在我們知道了,這個(gè)管理后臺(tái)首頁主體界面模板,先暫時(shí)停止分析index_body.php這個(gè)文件,接下來我們分析這個(gè)php文件對(duì)應(yīng)的模板文件,然后再接著分析index_body.php。我們打開index_body.htm模板文件,建立大家打開這個(gè)文件,那些引入的js,css這里暫不作分析,先看主要的,向下看,你會(huì)發(fā)現(xiàn)后臺(tái)界面最上方的“”,在這個(gè)模板文件里對(duì)應(yīng)起來了,說明模板沒有找錯(cuò),織夢(mèng)模板,一般是和對(duì)應(yīng)的php文件名對(duì)應(yīng)且一般都放在同一目錄里面的templets文件夾里面,如果你用織夢(mèng)做模板多了,你就會(huì)發(fā)現(xiàn)這個(gè)特點(diǎn)。
現(xiàn)在我們?cè)囍薷囊幌?ldquo;”這一行字,看看效果。
接下來向下看,我們看到<?php echo $cfg_soft_enname; ?> 更新消息,這與后臺(tái)界面上面的“DedeCMS更新消息”是不是一個(gè)東西呢?答案是肯定的,只不過在模板里面,DedeCMS 用<?php echo $cfg_soft_enname; ?>來代替了,為什么要代替呢?因?yàn)椋?lt;?php echo $cfg_soft_enname; ?>是動(dòng)態(tài)變化的,也就是他代表了一個(gè)軟件名稱,你可以叫Dedecms,可以叫Bebecms,隨便起,所以,這里用了一段php代碼來動(dòng)態(tài)顯示。
這一塊里面的用了一段php代碼,如下圖4所示:
這段代碼在后臺(tái)界面對(duì)應(yīng)下圖5所示:
商業(yè)授權(quán)查詢這段代碼,直接引入一個(gè)ifram框架,重點(diǎn)看一下index_body.php?dopost=showauth這個(gè)代碼,現(xiàn)在我們返回index_body.php文件,在文件最后找到一個(gè)判斷,else if ($dopost=='showauth')這個(gè)判斷就是當(dāng)dopost=showauth時(shí),調(diào)用模板文件templets/index_body_showauth.htm。這個(gè)index_body.php?dopost=showauth代碼里面的問號(hào)“?”的意思就是在index_body.php里面,調(diào)用當(dāng)dopost=showauth時(shí)的內(nèi)容。
同理如果代碼變成index_body.php?dopost=showad 這樣,意思就是在index_body.php文件里,當(dāng)dopost=showad時(shí),調(diào)用模板templets/index_body_showad.htm。
反回模板index_body.htm文件接著向下看,你會(huì)發(fā)現(xiàn),后臺(tái)對(duì)應(yīng)的“快捷操作”版塊,這一塊有二個(gè)功能“新增”和“管理”功能,大家可以增加和管理一下試一下,新增通過一個(gè)javalscript 鼠標(biāo)點(diǎn)擊事件,調(diào)用AddNew()函數(shù),這個(gè)函數(shù)在index_body.php文件里面從“增加新項(xiàng)”一直到“載入右邊內(nèi)容”結(jié)束,這段代碼就是用來實(shí)現(xiàn)“新增”功能的。
另一個(gè)函數(shù)ListAll(),這個(gè)是一個(gè)javalscript函數(shù),這個(gè)函數(shù)在js/indexbody.js文件里面,js代碼如下:
function ListAll(){
$DE('editTab').style.display = 'block';
var myajax = new DedeAjax($DE('editTabBody'));
myajax.SendGet('index_body.php?dopost=editshow');
}
不要看這一小段代碼,用到的技術(shù)非常多,其中ajax綜合技術(shù),這里不多講,這個(gè)函數(shù)的意思是發(fā)送index_body.php?dopost=editshow請(qǐng)求,到這里實(shí)際上和函數(shù)AddNew()遠(yuǎn)行就完全相同了。當(dāng)dopost=editshow時(shí),在index_body.php里執(zhí)行“修改快捷操作”。
再向下看,就是“系統(tǒng)基本信息”這一塊了,這一塊沒有什么好說的,都比較容易理解,其中里面的javascript:showMore(),用到了頭部定義的js代碼,在最上面。
下面的“程序團(tuán)隊(duì)”版塊,也比較簡單,就是幾個(gè)固定的內(nèi)容。
下面是贊助商廣告版塊,這個(gè)我們一般直接刪掉,因?yàn)?,后臺(tái)在加載的時(shí)候,這個(gè)要占用服務(wù)器資源,一般情況我們都刪掉。刪也比較好刪,上面的織夢(mèng)都給我們標(biāo)好了,到哪里結(jié)束。
下面的“統(tǒng)計(jì)信息”用的是js知識(shí),動(dòng)態(tài)生成的。
最新文檔這個(gè)版塊,用了一大段的代碼,直接用select 查詢數(shù)據(jù)庫,然后用foreach把數(shù)組里面的數(shù)據(jù)循環(huán)出來,這樣的php代碼一般都在php文件里,在模板里特別是在前臺(tái)模板都沒有出現(xiàn)過,一般在后臺(tái)模板里會(huì)出現(xiàn)這樣的php代碼
。
總結(jié):這個(gè)界面主要是在模板index_body.htm里改,如果您想詳細(xì)了解這個(gè)模板里面的功能的話,那么,最主要的就用到index_body.php代碼了,要分析這里面的代碼要相當(dāng)?shù)膒hp知識(shí),由于我們的織夢(mèng)dedecms 教程主要是模板或界面修改,所以,基本上都是大體解釋一下,本教程中還提到j(luò)avalscript,ajax等相關(guān)知識(shí),特別是ajax是一門綜合性技術(shù),以后我們會(huì)詳細(xì)講解。