Discuz二次開(kāi)發(fā)基本知識(shí)總結(jié)
一) Discuz!的文件系統(tǒng)目錄
注:想搞DZ開(kāi)發(fā),就得弄懂DZ中每個(gè)文件的功能。
a) Admin:后臺(tái)管理功能模塊
b) Api:DZ系統(tǒng)與其它系統(tǒng)之間接口程序
c) Archiver:DZ中,用以搜索引擎優(yōu)化的無(wú)圖版
d) Attachments:DZ中 ,用戶上傳附件的存放目錄
e) Customavatars:DZ中,用戶自定義頭像的目錄
f) Forumdata:DZ緩存數(shù)據(jù)的存放目錄
g) Images:DZ模板中的圖片存放目錄
h) Include:DZ常用函數(shù)庫(kù),基本功能模塊目錄
i) Ipdata:DZ統(tǒng)計(jì)IP來(lái)路用的數(shù)據(jù)
j) Plugins:DZ插件信息的存放目錄
k) Templates:DZ模板文件的存放目錄
l) Wap:DZ無(wú)線,Wap程序處理目錄
二) 必須記熟Discuz!數(shù)據(jù)庫(kù)設(shè)計(jì)的每個(gè)表的功能,每個(gè)表中每個(gè)字段的功能。
關(guān)于DZ數(shù)據(jù)庫(kù)設(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 || admin==3”超級(jí)版主和版主,每個(gè)Action對(duì)應(yīng)一個(gè)腳本文件,腳本文件的命名為action.inc.php(*.inc.php),并存放在admin目錄下,如執(zhí)行:admincp.php?action=dodo,相當(dāng)于執(zhí)行admin目錄下的dodo.inc.php文件
b) 前臺(tái)流程控制:前臺(tái)的流程控制比較簡(jiǎn)單:流程是自由的,如:
首頁(yè):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ù)處理過(guò)程
a) DZ對(duì)mysql的數(shù)據(jù)庫(kù)操作處理全部封裝在dbstuff(db_mysql.class.php)類中
b) 所在的外部數(shù)據(jù)均通過(guò)“daddslashes()”初步過(guò)濾,然后再過(guò)濾,再根據(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代碼,并根據(jù)styleid保存在forumdata/templates下,這個(gè)有點(diǎn)像Smarty中的技術(shù)。
六) DZ中的語(yǔ)言處理
a) DZ前臺(tái)及后臺(tái)中、英語(yǔ)言的實(shí)現(xiàn),均是把語(yǔ)句定義成了語(yǔ)變量,然后在模板輸入,語(yǔ)句變量的賦值,均放在模板目錄中的*.lang.php文件中,DZ在生成網(wǎng)站風(fēng)格時(shí)就加載了這相應(yīng)的語(yǔ)言包。
七) DZ如何處理用戶信息(存取、計(jì)算、更新過(guò)程)
新手要做二次開(kāi)發(fā),都必須掌握這數(shù)組中,每個(gè)數(shù)組元素的意義。
a) DZ的基本信息,如用戶信息,Session信息存在如下變量中:
a). $_DCACHE
b). $_COOKIE
c). $_DCOOKIE
d). $_DSESSION
e). $_DPLUGIN
b) 可以通過(guò)print_r($GLOBALS),打印全部變量
八) DZ中緩存處理機(jī)制
a) DZ中緩存處理過(guò)程都放在“cache.func.php”中,DZ的緩存處理比較簡(jiǎn)單,其原理是把一個(gè)數(shù)組轉(zhuǎn)換成了PHP代碼,并保存在緩存目錄下,大家可打開(kāi)緩存文件查看便知。
b) 使用方法:如果在新開(kāi)的功能中,需要緩存某部分?jǐn)?shù)據(jù),基本上就是:
1)定義并注冊(cè)緩存名字。
2)從數(shù)據(jù)讀取相應(yīng)的數(shù)據(jù)。
3)數(shù)據(jù)在寫(xiě)入緩存前作相應(yīng)處理。
4)最后寫(xiě)入緩存。
具體操作,可以看文件中的代碼,做相應(yīng)的修改即可
九) DZ中模板處理機(jī)制
a) DZ獨(dú)創(chuàng)的模板處理技術(shù),類似于Smarty中的模板處理,只是具體算法,過(guò)程不同,Smarty是一種重型模板引擎方案。其原理都是把模板中的變量轉(zhuǎn)換成相應(yīng)的PHP代碼,這個(gè)過(guò)程實(shí)際是模訪JAVA中的一次編譯,多處運(yùn)行。
十) DZ中權(quán)限處理機(jī)制
a) 對(duì)于DZ中前臺(tái)的每相action都有$discuz_action定義,DZ根據(jù)用戶所在的用戶組來(lái)判定用戶是否具有相應(yīng)操作$discuz_action的權(quán)限。至于后臺(tái)的權(quán)限權(quán)驗(yàn)證,則更簡(jiǎn)單了,依據(jù)“admin==1”來(lái)確定的
十一) DZ中如何實(shí)現(xiàn)URL靜態(tài)化
a) DZ中的靜態(tài)有兩法,只要懂ReWrite規(guī)劃的朋友,一看就知。
十二) DZ獨(dú)創(chuàng)的HTML編輯器,如何截取并使用,如果進(jìn)行Discuz!代和Html代碼的轉(zhuǎn)換
a) 這也算是DZ比較牛的一項(xiàng)技術(shù)了,在早期版中,因DZ編輯器的不足,使得很多用戶放棄了DZ。實(shí)現(xiàn)原理:通過(guò)JS把用的一些操作轉(zhuǎn)換成了DZ的bbcode代碼。這樣子提交了安全性,將帶有bbcode代碼的內(nèi)容存入數(shù)據(jù),在用戶打開(kāi)頁(yè)頁(yè)時(shí),又把bbcode代碼轉(zhuǎn)換成html代碼
本貼聲明:由于時(shí)間有限,本貼只有關(guān)于DZ部分功能的簡(jiǎn)短分析。若各位網(wǎng)友,對(duì)本文感興趣并想更為深入了解DZ,請(qǐng)?jiān)诒举N后回貼!我將盡可能多的DZ技術(shù)分析寫(xiě)在本文,不斷更新本貼內(nèi)容。
部分文件說(shuō)明:
admincp.php 管理
ajax.php ajax功能
announcement.php 公告
attachment 附件
board.php 真正的首頁(yè)
config.inc.php 這個(gè)是配置文件
corpus.php 論壇文集
digest.php 精華帖子
discuz_version.php 論壇版本號(hào)
faq.php 問(wèn)題列表
forumdisplay.php 論壇列表
index.php 跳轉(zhuǎn)頁(yè)面
loggin.php 認(rèn)證頁(yè)面(登錄退出)
mail_config.inc.php 郵件配置
member.php 用戶操作
memcp.php 個(gè)人控制面版
misc.php 零碎功能
my.php 我的帖子
plugin.php 插件
pm.php 短信
post.php 發(fā)送帖子
redirect.php 頁(yè)面重定向
register.php 注冊(cè)
robots.txt 限制搜索
rss.php rss信息發(fā)布
search.php 論壇查詢
secode.php 驗(yàn)證碼
stats.php 統(tǒng)計(jì)
topic.php 首頁(yè)論壇專題
topicadmin 主題管理
viewpro.php 顯示個(gè)人信息
viewthread.php 主題顯示
文件夾
admin 管理
api 接口
archiver 文檔
attachments 附件
customavatars 自定義表情
forumdata 論壇數(shù)據(jù)包含緩沖數(shù)據(jù)
images 圖片
include 公共文件
install 安裝包
ipdata ip地址
plugins 插件
readme 幫助文檔
templates 模板
utilities 工具包
wap 手機(jī)網(wǎng)站
文件夾include
advertisements.inc.php 廣告管理
ajax.js ajax相關(guān)
attachment.func.php 附件函數(shù)集
bbscode.js 論壇表情
cache.fun.php 緩存函數(shù)集
category.inc.php 欄目
chinese.class.php
common.inc.php 最主要的頭文件
common.js 最主要的js文件
corpus.func.php 論壇文集函數(shù)
counter.inc.php 論壇計(jì)數(shù)
cron.func.php 計(jì)劃任務(wù)
db_mysql.class.php 數(shù)據(jù)庫(kù)
db_mysql_error.inc.php 數(shù)據(jù)庫(kù)錯(cuò)誤
debug.php 調(diào)試信息
discuzcode.func.php 論壇代碼
editor.func.php 編輯器
editor.js 編輯器
editpost.inc.php 編輯帖子
floatadv.js 浮動(dòng)廣告
forum.func.php 論壇函數(shù)集
global.func.php 全局函數(shù)
menu.js 菜單
misc.func.php 其它
newreply.inc.php 新回復(fù)
newthread.inc.php 新主題
*pmprompt.inc.php
post.fun.php 發(fā)表主題
printable.inc.php 論壇打印
qihoo.js qihoo
relatethreads.inc.php 相關(guān)主題
security.inc.php 安全
sendmail.inc.php 郵件
serverbusy.htm 系統(tǒng)繁忙
template.func.php 模板
threadpay.inc.php 購(gòu)買帖子
上一篇:Discuz! X1.5 防CC腳本設(shè)置方法
欄 目:discuz
下一篇:火車頭 Discuz-X 1.0 論壇免登陸發(fā)布接口
本文標(biāo)題:Discuz二次開(kāi)發(fā)基本知識(shí)總結(jié)
本文地址:http://mengdiqiu.com.cn/a1/discuz/12932.html
您可能感興趣的文章


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
隨機(jī)閱讀
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載