国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Discuz > 正文

Discuz!二次開發必須知道的基本知識

2024-09-11 09:02:50
字體:
來源:轉載
供稿:網友

目前Discuz的站長已經上百萬,從事Discuz二次開發的應該也有數萬以上的人,現在Discuz二次開發也成為招聘的一個熱點,“Discuz!”在下文中簡稱“DZ”,要弄DZ二次開發,必須至少具備如下技能:

1) 能夠理很好理解MVC構架的原理(雖然DZ不是MVC架構的)

2) 扎實的PHP基礎,熟悉結構化程序,OOP程序的寫法及應用

3) 熟悉MYSQL就用,掌握SQL語言,懂SQL優化者更佳

4) 熟悉使用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). $_DCACHE

b). $_COOKIE

c). $_DCOOKIE

d). $_DSESSION

e). $_DPLUGIN

b) 可以通過print_r($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都有$discuz_action定義,DZ根據用戶所在的用戶組來判定用戶是否具有相應操作$discuz_action的權限。至于后臺的權限權驗證,則更簡單了,依據“admin==1”來確定的

十一) DZ中如何實現URL靜態化

a) DZ中的靜態有兩法,只要懂ReWrite規劃的朋友,一看就知。

十二) DZ獨創的HTML編輯器,如何截取并使用,如果進行Discuz!代和Html代碼的轉換

a) 這也算是DZ比較牛的一項技術了,在早期版中,因DZ編輯器的不足,使得很多用戶放棄了DZ,實現原理:通過JS把用的一些操作轉換成了DZ的bbcode代碼。這樣子提交了安全性,將帶有bbcode代碼的內容存入數據,在用戶打開頁頁時,又把bbcode代碼轉換成html代碼.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 太谷县| 无棣县| 新宁县| 乾安县| 白山市| 志丹县| 江都市| 垣曲县| 三门县| 岑溪市| 元谋县| 石嘴山市| 酉阳| 铁岭县| 盐山县| 迭部县| 石阡县| 岳普湖县| 柳州市| 南昌县| 闻喜县| 丰顺县| 衢州市| 临夏市| 增城市| 阿勒泰市| 榆树市| 双峰县| 保亭| 桦甸市| 中阳县| 托克逊县| 秦安县| 天柱县| 胶南市| 盐山县| 密云县| 东源县| 理塘县| 云龙县|