資源描述:
《我的discuz開發(fā)經(jīng)驗(yàn)分享》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、前言:為方便互聯(lián)網(wǎng)數(shù)萬Discuz!愛好者,更加深入了解Discuz!軟件,本人在熟悉Discuz!過程中,順便將個(gè)人經(jīng)驗(yàn)寫給大家。本貼內(nèi)容由本人定期更新。本貼只介紹Discuz!中部分技術(shù)點(diǎn),本貼緊屬個(gè)人觀點(diǎn),不足之處,請(qǐng)各位多多指教,在下先此謝過!?!癉iscuz!”在下文中簡(jiǎn)稱“DZ”。要弄DZ二次開發(fā),必須至少具備如下技能:1)能夠理很好理解MVC構(gòu)架的原理(雖然DZ不是MVC架構(gòu)的)2)扎實(shí)的PHP基礎(chǔ),熟悉結(jié)構(gòu)化程序,OOP程序的寫法及應(yīng)用3)熟悉MYSQL就用,掌握SQL語言,懂SQL優(yōu)化者更佳4)熟悉使用Discuz!的各項(xiàng)功能一)Discuz!的文件系統(tǒng)目
2、錄注:想搞DZ開發(fā),就得弄懂DZ中每個(gè)文件的功能。a)Admin:后臺(tái)管理功能模塊b)Api:DZ系統(tǒng)與其它系統(tǒng)之間接口程序c)Archiver:DZ中,用以搜索引擎優(yōu)化的無圖版d)Attachments:DZ中,用戶上傳附件的存放目錄e)Customavatars:DZ中,用戶自定義頭像的目錄f)Forumdata:DZ緩存數(shù)據(jù)的存放目錄g)Images:DZ模板中的圖片存放目錄h)Include:DZ常用函數(shù)庫,基本功能模塊目錄i)Ipdata:DZ統(tǒng)計(jì)IP來路用的數(shù)據(jù)j)Plugins:DZ插件信息的存放目錄k)Templates:DZ模板文件的存放目錄l)Wap:D
3、Z無線,Wap程序處理目錄二)必須記熟Discuz!數(shù)據(jù)庫設(shè)計(jì)的每個(gè)表的功能,每個(gè)表中每個(gè)字段的功能。關(guān)于DZ數(shù)據(jù)庫設(shè)計(jì)文檔,請(qǐng)參閱DZ相關(guān)的項(xiàng)目文檔(請(qǐng)從本貼附件中下載)三)Discuz!的流程控制a)后臺(tái)流程控:DZ后臺(tái)所有的功能,均需要注冊(cè)到admincp.php文件,每個(gè)功能都至少有一個(gè)或一個(gè)以上的Action(動(dòng)作),在admincp.php中,可以定義Action的執(zhí)行權(quán)限,分別為:“admin==1”管理員,或“admin==2
4、
5、admin==3”超級(jí)版主和版主,每個(gè)Action對(duì)應(yīng)一個(gè)腳本文件,腳本文件的命名為action.inc.php(*.inc.ph
6、p),并存放在admin目錄下,如執(zhí)行:admincp.php?action=dodo,相當(dāng)于執(zhí)行admin目錄下的dodo.inc.php文件b)前臺(tái)流程控制:前臺(tái)的流程控制比較簡(jiǎn)單:流程是自由的,如:首頁:index.php會(huì)員注冊(cè):register.php;會(huì)員登錄:logging.php發(fā)貼程序:post.php會(huì)員信息:member.php論壇內(nèi)容:forumdisplay.php查看貼子:viewthread.php…大部分功能,此處不一一列出…c)DZ根目下的config.inc.php屬于整個(gè)DZ系統(tǒng)的配置文件四)Discuz!的數(shù)據(jù)處理過程a)DZ對(duì)mys
7、ql的數(shù)據(jù)庫操作處理全部封裝在dbstuff(db_mysql.class.php)類中b)所在的外部數(shù)據(jù)均通過“daddslashes()”初步過濾,然后再過濾,再根據(jù)需要處理五)Discuz!的顯示控制(網(wǎng)站多樣式風(fēng)格輸出)a)顯示層就是大家通常所看到的網(wǎng)站風(fēng)格了。DZ中每套風(fēng)絡(luò)分別在templates及images下對(duì)應(yīng)一個(gè)風(fēng)格文件的存放目錄。網(wǎng)站風(fēng)格的制作,請(qǐng)參閱詳細(xì)的DZ風(fēng)格制作文檔b)DZ網(wǎng)站風(fēng)格文件處理的原理:其實(shí)很簡(jiǎn)單,DZ使用template.func.php中的parse_template()以PHP正則運(yùn)算把htm模文件中的模板標(biāo)簽,轉(zhuǎn)換成了PHP代碼
8、,并根據(jù)styleid保存在forumdata/templates下,這個(gè)有點(diǎn)像Smarty中的技術(shù)。六)DZ中的語言處理a)DZ前臺(tái)及后臺(tái)中、英語言的實(shí)現(xiàn),均是把語句定義成了語變量,然后在模板輸入,語句變量的賦值,均放在模板目錄中的*.lang.php文件中,DZ在生成網(wǎng)站風(fēng)格時(shí)就加載了這相應(yīng)的語言包。七)DZ如何處理用戶信息(存取、計(jì)算、更新過程)新手要做二次開發(fā),都必須掌握這數(shù)組中,每個(gè)數(shù)組元素的意義。a)DZ的基本信息,如用戶信息,Session信息存在如下變量中:a).$_DCACHEb).$_COOKIEc).$_DCOOKIEd).$_DSESSIONe).$
9、_DPLUGINb)可以通過print_r($GLOBALS),打印全部變量八)DZ中緩存處理機(jī)制a)DZ中緩存處理過程都放在“cache.func.php”中,DZ的緩存處理比較簡(jiǎn)單,其原理是把一個(gè)數(shù)組轉(zhuǎn)換成了PHP代碼,并保存在緩存目錄下,大家可打開緩存文件查看便知。b)使用方法:如果在新開的功能中,需要緩存某部分?jǐn)?shù)據(jù),基本上就是:1)定義并注冊(cè)緩存名字。2)從數(shù)據(jù)讀取相應(yīng)的數(shù)據(jù)。3)數(shù)據(jù)在寫入緩存前作相應(yīng)處理。4)最后寫入緩存。具體操作,可以看文件中的代碼,做相應(yīng)的修改即可九)DZ中模板處理機(jī)制a)DZ獨(dú)創(chuàng)的