設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 525|回復: 0
打印 上一主題 下一主題

Discuz二次開發基本知識總結

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2020-3-13 14:53:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一) Discuz!的檔案系統目錄  
注:想搞DZ開發,就得弄懂DZ中每個檔案的功能。  
a) Admin:後臺管理功能模組  
b) Api:DZ系統與其它系統之間介面程式  
c) Archiver:DZ中,用以搜尋引擎優化的無圖版  
d) Attachments:DZ中 ,使用者上傳附件的存放目錄  
e) Customavatars:DZ中,使用者自定義頭像的目錄  
f) Forumdata:DZ快取資料的存放目錄  
g) Images:DZ模板中的圖片存放目錄  
h) Include:DZ常用函式庫,基本功能模組目錄  
i) Ipdata:DZ統計IP來路用的資料  
j) Plugins:DZ外掛資訊的存放目錄  
k) Templates:DZ模板檔案的存放目錄  
l) Wap:DZ無線,Wap程式處理目錄
二) 必須記熟Discuz!資料庫設計的每個表的功能,每個表中每個欄位的功能。  
關於DZ資料庫設計文件,請參閱DZ相關的專案文件(請從本貼附件中下載)
三) Discuz!的流程控制  
a) 後臺流程控:DZ後臺所有的功能,均需要註冊到admincp.php檔案,每個功能都至少有一個或一個以上的Action(動作),在admincp.php中,可以定義Action的執行許可權,分別為:“admin==1”管理員,或“admin==2 || admin==3”超級版主和版主,每個Action對應一個指令碼檔案,指令碼檔案的命名為action.inc.php(*.inc.php),並存放在admin目錄下,如執行:admincp.php?action=dodo,相當於執行admin目錄下的dodo.inc.php檔案  
b) 前臺流程控制:前臺的流程控制比較簡單:流程是自由的,如:  
首頁:index.php  
會員註冊:register.php;  
會員登入:logging.php  
發貼程式:post.php  
會員資訊:member.php  
論壇內容:forumdisplay.php  
檢視貼子:viewthread.php  
…大部分功能,此處不一一列出…  
c) DZ根目下的config.inc.php屬於整個DZ系統的配置檔案
四) Discuz!的資料處理過程  
a) DZ對mysql的資料庫操作處理全部封裝在dbstuff(db_mysql.class.php)類中  
b) 所在的外部資料均通過“daddslashes()”初步過濾,然後再過濾,再根據需要處理
五) Discuz!的顯示控制(網站多樣式風格輸出)  
a) 顯示層就是大家通常所看到的網站風格了。DZ中每套風絡分別在templates及images下對應一個風格檔案的存放目錄。網站風格的製作,請參閱詳細的DZ風格製作文件  
b) DZ網站風格檔案處理的原理:其實很簡單,DZ使用template.func.php中的parse_template()以PHP正則運算把htm模檔案中的模板標籤,轉換成了PHP程式碼,並根據styleid儲存在forumdata/templates下,這個有點像Smarty中的技術。
六) DZ中的語言處理  
a) DZ前臺及後臺中、英語言的實現,均是把語句定義成了語變數,然後在模板輸入,語句變數的賦值,均放在模板目錄中的*.lang.php檔案中,DZ在生成網站風格時就載入了這相應的語言包。
七) DZ如何處理使用者資訊(存取、計算、更新過程)  
新手要做二次開發,都必須掌握這陣列中,每個陣列元素的意義。  
a) DZ的基本資訊,如使用者資訊,Session資訊存在如下變數中:  
a). DCACHEb)._COOKIE  
c). DCOOKIEd)._DSESSION  
e). DPLUGINb)可以通過printr(GLOBALS),列印全部變數  
八) DZ中快取處理機制  
a) DZ中快取處理過程都放在“cache.func.php”中,DZ的快取處理比較簡單,其原理是把一個數組轉換成了PHP程式碼,並儲存在快取目錄下,大家可開啟快取檔案檢視便知。  
b) 使用方法:如果在新開的功能中,需要快取某部分資料,基本上就是:  
1)定義並註冊快取名字。  
2)從資料讀取相應的資料。  
3)資料在寫入快取前作相應處理。  
4)最後寫入快取。  
具體操作,可以看檔案中的程式碼,做相應的修改即可  
九) DZ中模板處理機制  
a) DZ獨創的模板處理技術,類似於Smarty中的模板處理,只是具體演算法,過程不同,Smarty是一種重型模板引擎方案。其原理都是把模板中的變數轉換成相應的PHP程式碼,這個過程實際是模訪JAVA中的一次編譯,多處執行。  
十) DZ中許可權處理機制  
a) 對於DZ中前臺的每相action都有discuzaction定義,DZ根據用戶所在的用戶組來判定用戶是否具有相應操作discuz_action的許可權。至於後臺的許可權權驗證,則更簡單了,依據“admin==1”來確定的  
十一) DZ中如何實現URL靜態化  
a) DZ中的靜態有兩法,只要懂ReWrite規劃的朋友,一看就知。  
十二) DZ獨創的HTML編輯器,如何擷取並使用,如果進行Discuz!代和Html程式碼的轉換  
a) 這也算是DZ比較牛的一項技術了,在早期版中,因DZ編輯器的不足,使得很多使用者放棄了DZ。實現原理:通過JS把用的一些操作轉換成了DZ的bbcode程式碼。這樣子提交了安全性,將帶有bbcode程式碼的內容存入資料,在使用者開啟頁頁時,又把bbcode程式碼轉換成html程式碼
本貼宣告:由於時間有限,本貼只有關於DZ部分功能的簡短分析。若各位網友,對本文感興趣並想更為深入瞭解DZ,請在本貼後回貼!我將盡可能多的DZ技術分析寫在本文,不斷更新本貼內容。
部分檔案說明:
admincp.php 管理  
ajax.php ajax功能  
announcement.php 公告  
attachment 附件  
board.php 真正的首頁  
config.inc.php 這個是配置檔案  
corpus.php 論壇文集  
digest.php 精華帖子  
discuz_version.php 論壇版本號  
faq.php 問題列表  
forumdisplay.php 論壇列表  
index.php 跳轉頁面  
loggin.php 認證頁面(登入退出)  
mail_config.inc.php 郵件配置  
member.php 使用者操作  
memcp.php 個人控制面版  
misc.php 零碎功能  
my.php 我的帖子  
plugin.php 外掛  
pm.php 簡訊  
post.php 傳送帖子  
redirect.php 頁面重定向  
register.php 註冊  
robots.txt 限制搜尋  
rss.php rss資訊釋出  
search.php 論壇查詢  
secode.php 驗證碼  
stats.php 統計  
topic.php 首頁論壇專題  
topicadmin 主題管理  
viewpro.php 顯示個人資訊  
viewthread.php 主題顯示
資料夾  
admin 管理  
api 介面  
archiver 文件  
attachments 附件  
customavatars 自定義表情  
forumdata 論壇資料包含緩衝資料  
images 圖片  
include 公共檔案  
install 安裝包  
ipdata ip地址  
plugins 外掛  
readme 幫助文件  
templates 模板  
utilities 工具包  
wap 手機網站
資料夾include  
advertisements.inc.php 廣告管理  
ajax.js ajax相關  
attachment.func.php 附件函式集  
bbscode.js 論壇表情  
cache.fun.php 快取函式集  
category.inc.php 欄目  
chinese.class.php  
common.inc.php 最主要的標頭檔案  
common.js 最主要的js檔案  
corpus.func.php 論壇文集函式  
counter.inc.php 論壇計數  
cron.func.php 計劃任務  
db_mysql.class.php 資料庫  
db_mysql_error.inc.php 資料庫錯誤  
debug.php 除錯資訊  
discuzcode.func.php 論壇程式碼  
editor.func.php 編輯器  
editor.js 編輯器  
editpost.inc.php 編輯帖子  
floatadv.js 浮動廣告  
forum.func.php 論壇函式集  
global.func.php 全域性函式  
menu.js 選單  
misc.func.php 其它  
newreply.inc.php 新回覆  
newthread.inc.php 新主題  
*pmprompt.inc.php  
post.fun.php 發表主題  
printable.inc.php 論壇列印  
qihoo.js qihoo  
relatethreads.inc.php 相關主題  
security.inc.php 安全  
sendmail.inc.php 郵件  
serverbusy.htm 系統繁忙  
template.func.php 模板  
threadpay.inc.php 購買帖子

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-4-29 17:02 , Processed in 0.270121 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表