1. 程式人生 > >Discuz二次開發基本知識總結

Discuz二次開發基本知識總結

一) 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都有discuzactionDZdiscuz_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 購買帖子

相關推薦

Discuz開發基本知識總結

一) Discuz!的檔案系統目錄 注:想搞DZ開發,就得弄懂DZ中每個檔案的功能。 a) Admin:後臺管理功能模組 b) Api:DZ系統與其它系統之間介面程式 c) Archiver:DZ中,用以搜尋引擎優化的無圖版 d) Attac

GTS-800開發基本流程總結

win highlight line names 關閉 參數 ble 名稱 速度 1、打開控制器         GT_Open 2、啟動伺服使能        GT_ClrSts 3、軸規劃位置清零       GT_SetPrfPos 4、軸運動模式        

fiddler開發基礎知識

一、官方開發文件 連線在這:http://www.telerik.com/fiddler 開發文件在這:http://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet 二、Fiddler介面 Fiddler4 公開介面有以下

Revit開發基礎知識

獲取應用、文件及當前檢視資訊 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) {

基於ArcGIS 開發 使用技巧總結

這兩天剛忙完一個專案,趁著這幾天任務輕鬆,抽空總結上一個專案所遇到的一些問題,都是很簡單的基本操作,先列個大綱吧: 一、地圖的基本操作:(傳送門:https://blog.csdn.net/KK_bluebule/article/details/83414871) 1.工具欄的實現:

Civil3D開發常見問題總結

分享圖片 多人 兩個 畫線 總結 文件夾 work 出現 develop Civil3D二次開發常見問題總結 AutoCAD命令提示"未知命令**……"的原因:在Initialize方法內報出異常就會導致這種情況。O__O"…(或是少加了dll引用)還有一種情況就是Com

音訊開發基本知識總結

一、音訊的基本概念1.取樣率:(也稱為取樣速度或者取樣頻率)定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,單位用赫茲(Hz)來表示。取樣頻率的倒數是取樣週期(也稱為取樣時間),它表示取樣之間的時間間隔。常用的取樣率有:  * 8,000 Hz - 電話所用取樣率, 對於

圖像處理基本知識總結

空間 彩色 最終 圖像處理 邊緣 不同的 byte 一個 分析法 筆試題知識點 1、存儲一副大小為1024×1024,256個灰度的圖像,需要(8M)byte。 256是2的8次方,即8位,8個bit,1個字節;等於1024*1024*8 (bit)=8M(bit)。 2、

淺析軟體開發基本要求

二次開發,簡單的說就是在現有的軟體上進行定製修改,功能的擴充套件,然後達到自己想要的功能,一般來說都不會改變原有系統的核心。一般的來說,一些大公司如IBM開發了一個大型的軟體系統平臺,根據不同的客戶的需要,一些其它的中小公司為客戶根據需求在該平臺上進行第二次有針對性的開發。

大華攝像頭開發總結

最近半個月在做大華裝置的資料流的獲取,有點坑呀! 參考提供的手冊,我本想回調出視訊資料h264,拷貝手冊上的程式碼,可就是獲取不成功,諮詢了對方人員,才知道怎麼回事。 在window下,NETSDK回撥碼流需要獲取yuv資料,需要 在CLIENT_RealPlay()函式裡

discuz!7.2升級discuzX3.2,流程文件(有開發

由於官方給出的教程大多需要備份原來的資料庫以防升級失敗,風險較高,所以本教程不論升級成功與否,對原來的discuz資料庫是完全沒有影響的。 如果discuz與第三方站點有同步登陸等聯絡的,升級之前需要先將discuz與第三方站點解綁,保證discuz關閉後對與之關聯的第

discuz論壇積分體系開發攻略

所有涉及到論壇的積分修改,最終都是呼叫檔案/discuz/source/function/function_core.php 中方法updatecreditbyaction向裝修網介面http://www.to8to.com/api/update_credit.php傳送

dedecms開發:dedetemplate.class.php 動態模板類

filename 外部 運行 mpi public esc val net color dedecms二次開發目錄點這個:dedecms二次開發教程目錄 核心類文件 include/dedetemplate.class.php 用途:用於非核心模塊的動態頁面或列表頁的模板解

VB.Net實現下CATIA開發方法

ror 點擊 doc struct cat inf 定義 then ports 源自網絡。 在visual studio(vb,c#,c++)下使用CATIA進行二次開發有如下特點: -->需要引用CATIA的對象庫 -->需要對象聲明(visua

呼叫中心系統OA開發

清單 二次開發 工作 註意 分辨率 傳真 新增 歷史 有效 1. 既有修改 分辨率顯示自適應調整 工作流數據調整 2. 呼叫中心 語音電話 l 新建任務 字段:任務主題、語音主題、提

(6)微信開發 之 微信文本消息接口實現

微信 odin link 消息處理 nal puts 算法 帳號 接口實現 p.p1 { margin: 13.0px 0.0px 13.0px 0.0px; text-align: justify; font: 16.0px SimSun } p.p2 { margin:

學習 MeteoInfo開發教程(一)

mat 沒有 組件 資源管理 img 教程 layer 添加 bbs 來自氣象家園:http://bbs.06climate.com/forum.php?mod=viewthread&tid=6631 按照教程,沒有太大問題,有些是對c#操作不熟悉導致。 1.添加d

學習 MeteoInfo開發教程(三)

開發教程 cnblogs false raw class .dll dll inf legend 1.breakList的問題 ((PolygonBreak) aLS.breakList[0]).DrawFill=false; 新的類庫將LegendScheme的brea

學習 MeteoInfo開發教程(四)

手動添加 map dem itl 數控 nas 字號 south title 教程四的問題不大。 1.private void AddMapFrame_ChinaSouthSea()、private void AddTitle()兩個函數和public Form1()函數並

Revit開發--Hello World

man dem users att try encoding cli 引用 類庫 部署完開發環境,就要進行每次學習新的技能,必寫的Hello World。 1、打開VS開發環境,新建一個項目類庫RevitDemo。 2、修改Class1名稱為Command。 3、在引