久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Discuz:插件設(shè)計(jì)

來自站長(zhǎng)百科
Sutrong討論 | 貢獻(xiàn)2008年3月25日 (二) 14:44的版本
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

您在開始論壇插件的設(shè)計(jì)之前,有必要了解一下我們所推薦的插件設(shè)計(jì)方式,更好的規(guī)范性和兼容性,將使得您設(shè)計(jì)的插件受到更多使用者的歡 迎,對(duì)于程序員而言,也有助于形成

良好的編碼習(xí)慣,實(shí)現(xiàn)自身能力的提升。如果您有意編寫 Discuz! 論壇插件,請(qǐng)按照先后順序仔細(xì)閱讀本文檔。

準(zhǔn)備工作

插件實(shí)現(xiàn)流程

開始編寫論壇插件,您應(yīng)當(dāng)首先對(duì)插件實(shí)現(xiàn)的流程有一個(gè)大致的了解,以下是我們推薦的插件編寫流程:

     1. 熟練使用 Discuz! 論壇系統(tǒng)后,對(duì)希望完善或補(bǔ)充的個(gè)性化功能進(jìn)行評(píng)估,進(jìn)而提出插件的功能需求。
     2. 對(duì)插件做一個(gè)概括性的設(shè)計(jì),例如:需要使用什么菜單、什么參數(shù),配置哪些選項(xiàng)、數(shù)據(jù)結(jié)構(gòu)如何設(shè)計(jì)、前后臺(tái)實(shí)現(xiàn)哪些功能等等。 
     3. 閱讀本文檔并在系統(tǒng)設(shè)置中實(shí)際體驗(yàn) Discuz! 插件接口所實(shí)現(xiàn)的功用,例如:您的插件應(yīng)當(dāng)如何設(shè)計(jì)才能良好的掛接到論壇系統(tǒng)中
        來。插件接口能夠?qū)崿F(xiàn)哪些功能、不能實(shí)現(xiàn)哪些功能,插件為此而需要做的優(yōu)化、改造和取舍。 
     4. 編寫相應(yīng)程序代碼和模板語句,實(shí)現(xiàn)所需的功能并進(jìn)行代碼測(cè)試、兼容性測(cè)試和代碼改進(jìn)。 
     5. 如果需要公開您的插件,可以用插件導(dǎo)出的方式,將插件配置信息導(dǎo)出到一個(gè)文本文件中,連同相應(yīng)的程序和模板文件一同打包。同
        時(shí),編寫一個(gè)適合新手的插件的說明書也是必不可少的,其中包括:插件適用的 Discuz! 版本、功能概述、兼容性聲明、安裝方 
        法、使用方法、卸載方法等等。 
     6. 將插件提供給他人,或自己使用,根據(jù)使用者反饋,對(duì)插件進(jìn)行完善。插件實(shí)現(xiàn)流程至此結(jié)束。 

文件命名規(guī)范

Discuz! 按照如下的規(guī)范對(duì)程序和模板進(jìn)行命名,請(qǐng)?jiān)谠O(shè)計(jì)插件時(shí)盡量遵循此命名規(guī)范:

     1. 可以直接通過瀏覽器訪問的普通程序文件,以 .php 后綴命名。 
     2. 被普通程序文件引用的程序文件,以 .inc.php 后綴命名。 
     3. 被普通程序文件,或引用程序文件引用的函數(shù)庫(kù)或類庫(kù),以 .func.php(函數(shù)庫(kù)) 或 .class.php(類庫(kù)) 后綴命名。 
     4. 模板文件,以 .htm 后綴命名,模板文件只存在于 ./templates 目錄中。 
     5. 模板語言包文件,以 .lang.php 后綴命名,語言包文件只存放于 ./templates 目錄中,與模板文件同級(jí)目錄。 
     6. 被編譯后的模板文件,以 .tpl.php 后綴命名,前面的數(shù)字是模板套系的 ID,下劃線后面的是模板原名,編譯模板文件只存在于 ./forumdata/templates 目錄中。 
     7. 動(dòng)態(tài)緩存文件,存放于 ./forumdata/cache 目錄中,依據(jù)不同的功用進(jìn)行獨(dú)立的命名。 
     8. 使用后臺(tái)數(shù)據(jù)備份功能生成的備份文件,通常以 .sql 為后綴,存放于 ./forumdata/ 目錄中。 
     9. 有些目錄中存在內(nèi)容為空白的 index.htm 文件,此類文件是為了避免 Web 服務(wù)器打開 Directory Index 時(shí)可能產(chǎn)生的安全問題

common.inc.php 模塊功能白皮書

./include/common.inc.php 是 Discuz! 的通用初始化模塊程序,其幾乎被所有的外部代碼所引用,在您開始插件設(shè)計(jì)之前,可以先對(duì)該模

塊的大致功能做一定的了解。common.inc.php 主要完成了以下任務(wù):

      1. 對(duì)不同 PHP 及操作系統(tǒng)環(huán)境做了判斷和兼容性處理,使得 Discuz! 可以運(yùn)行于各種不同配置的服務(wù)器環(huán)境下。 
      2. 初始化常量 IN_DISCUZ 為 TRUE,用于 include 或 require 后續(xù)程序的判斷,避免其他程序被非法引用。 
      3. 讀取論壇所在絕對(duì)路徑,存放于常量 DISCUZ_ROOT 中。 
      4. 加載所需的基本函數(shù)庫(kù) include/global.func.php。 
      5. 通過 config.inc.php 中提供的數(shù)據(jù)庫(kù)賬號(hào)信息,建立數(shù)據(jù)庫(kù)連接。Discuz!支持?jǐn)?shù)據(jù)表的前綴,如需獲得表的全名,可使  
         用”{$tablepre}tablename” 或 $tablepre.’tablename’的方式。 
      6. 判斷用戶是否登錄,如登錄標(biāo)記 $discuz_uid 為非 0,同時(shí)將 $discuz_user(加了 slash 的用戶名,可用于不加修改的插入數(shù)
         據(jù)庫(kù))、 $discuz_userss(原始的用戶名,可用于頁面顯示)、$discuz_pw(用戶密碼的MD5串)、$discuz_secques(登錄提示
         問題的加密串)等相應(yīng)用戶信息賦值。 
      7. 判斷用戶管理權(quán)限,將管理權(quán)限標(biāo)記 $adminid 為 -1~3 中間的值。-1 代表為特殊用戶組用戶。0 代表普通用戶;1 代表論壇管
         理員;2 代表超級(jí)版主;3 代表論壇版主。將用戶權(quán)限按照其所在的主用戶組 ID 標(biāo)記為 $groupid,相關(guān)權(quán)限從該 $groupid 所
         對(duì)應(yīng)的系統(tǒng)緩存中讀出(./forumdata/cache/usergroup_$groupid.php)。將用戶擴(kuò)展權(quán)限按照其擴(kuò)展用戶組 ID 標(biāo)記為 $
         extgroupids,中間以 \t(tab) 分隔,格式為“$groupid1\t$groupid2...”,擴(kuò)展用戶組用于確定用戶的擴(kuò)展瀏覽權(quán)限,例如
         能否訪問某些有特殊權(quán)限設(shè)定的論壇等。 
      8. 讀入系統(tǒng)設(shè)置中的各種變量,并根據(jù) Cache 模塊的設(shè)定,根據(jù)當(dāng)前被調(diào)用的程序文件名(如 index.php,forumdisplay.php 等
         等)讀入相應(yīng)的緩存代碼。緩存代碼被存放于 ./forumdata/cache/ 中。除了對(duì)應(yīng)當(dāng)前程序的緩存,可能還會(huì)加載一些通用的緩存
         數(shù)據(jù),例如整個(gè)論壇的設(shè)置(./forumdata/cache/cache_settings.php)、界面風(fēng)格(./forumdata/cache/style_x.php)、當(dāng)
         前用戶的用戶組(./forumdata/cache/usergroup_x.php)、管理組權(quán)限(./forumdata/cache/adminusergroup_x.php)等。 
      9. 緩存數(shù)據(jù)的格式,大多是存放在 $_DCACHE['cachename'] 數(shù)組中,有些常用的參數(shù),如系統(tǒng)設(shè)置中的參數(shù)、風(fēng)格界面等,通常還
         被進(jìn)行了展開操作(extract)或使用常量進(jìn)行賦值。 
     10. 用戶如果處在登錄狀態(tài),會(huì)自動(dòng)讀出 members 表相關(guān)用戶的參數(shù)值,用戶的個(gè)性設(shè)置參數(shù):如時(shí)差、時(shí)間格式、界面風(fēng)格等等,會(huì)
         根據(jù)實(shí)際情況覆蓋系統(tǒng)默認(rèn)值,因此在后續(xù)程序通常不用再做判斷。 
     11. 如果程序提交的 URL 中包含 tid=x 或 fid=x,common.inc.php 模塊會(huì)自動(dòng)讀出其所對(duì)應(yīng)的論壇記錄及包括 access masks、版
         主設(shè)定等相應(yīng)權(quán)限,記錄在 $forum 變量中。后續(xù)程序只要通過URL將tid或fid傳遞過來,便可通過 $forum 數(shù)組的存在性或相關(guān)
         參數(shù)來對(duì)論壇權(quán)限進(jìn)行判斷,不需要再讀 forums 表的資料。

插件接口概述

使用管理員賬號(hào)登錄 Discuz! 系統(tǒng)設(shè)置,在左側(cè)菜單將可以看到“插件設(shè)置”和“插件管理”兩個(gè)選項(xiàng),使用超級(jí)版主或版主賬號(hào)登錄,將 只出現(xiàn)“插件設(shè)置”一個(gè)選項(xiàng)?!安寮芾怼笔强刂撇寮蜷_與否、設(shè)計(jì)插件模塊、菜單、參數(shù)和使用權(quán)限的地方,插件開發(fā)者可以依照設(shè)計(jì) 意圖,在此進(jìn)行插件的初步設(shè)置,這里同時(shí)也提供插件導(dǎo)入和插件開關(guān)的功能,用于導(dǎo)入他人設(shè)計(jì)的插件和對(duì)插件的可用狀態(tài)進(jìn)行變更?!安?件設(shè)置”是對(duì)已經(jīng)安裝的插件進(jìn)行設(shè)置的地方,供使用者對(duì)插件參數(shù)進(jìn)行調(diào)整以實(shí)現(xiàn)不同的插件功能。即前者主要面向開發(fā)者,后者主要面向使用者。

開始編寫一個(gè)新插件,請(qǐng)首先在插件管理中,輸入新插件的名稱和惟一標(biāo)識(shí)符。名稱用于表明此插件的用途,例如設(shè)置為“虛擬銀行插件”。惟一標(biāo)識(shí)符用于在后續(xù)的插件模塊中調(diào)用本插件,不可與現(xiàn)有插件重復(fù),命名規(guī)則限制與 PHP 變量命名相同,雖然初次設(shè)置后仍可改動(dòng),但強(qiáng)烈建議一次性將此配置設(shè)置好,否則可能涉及到很多代碼方面的變更,增加編碼的麻煩。請(qǐng)注意:惟一標(biāo)識(shí)符請(qǐng)不要設(shè)置的過短,或使用有可能與其他插件重復(fù)的命名,例如制作此插件的公司叫做 Comsenz Inc.,插件名稱是“虛擬銀行插件”,惟一標(biāo)識(shí)符可設(shè)置為“comsenz_virtual_bank”,后面將以“虛擬銀行插件”和“comsenz_virtual_bank”為例進(jìn)行說明。

在插件管理中添加插件后,僅僅是增加了一條插件記錄,后面還需要很多相關(guān)的設(shè)計(jì)和設(shè)置。在列表中選擇插件的“詳情”進(jìn)入插件的詳細(xì)設(shè)置。插件設(shè)置分為三個(gè)部分:


  • 插件基本設(shè)置:

設(shè)置插件的基本參數(shù),配置項(xiàng)目右邊括號(hào)中的內(nèi)容,為此設(shè)置對(duì)應(yīng)的參數(shù)名稱,調(diào)用方法將在后面的《參數(shù)讀取與緩存控制》中詳細(xì)說明。

  • 插件模塊和自定義菜單:

插件接口默認(rèn)提供四種可選的模塊方式:

     1. 直接鏈接(前臺(tái)菜單):可在前臺(tái)右上角加入一個(gè)菜單項(xiàng),可自主指派菜單鏈接的 URL。注意:由于引用外部程序,因此即便設(shè)置了
        模塊的使用等級(jí),您的程序如需權(quán)限判斷,仍需要引用 common.inc.php 和插件相關(guān)的緩存文件(將在后面的《參數(shù)讀取與緩存控
        制》中詳細(xì)說明),并自行判斷使用等級(jí)是否合法。 
     2. 前臺(tái)調(diào)用(前臺(tái)菜單):與直接鏈接類似,但其調(diào)用的是插件的一個(gè)模塊,模塊文件名指派為“./plugins/插件目錄/插件模塊名.
        inc.php”,由 plugin.php 調(diào)用此模塊,調(diào)用 URL 將在后面的《編寫插件的原則與注意事項(xiàng)》中詳細(xì)說明。 
     3. 后臺(tái)調(diào)用(后臺(tái)菜單):可在后臺(tái)插件設(shè)置中為此插件增添一個(gè)管理模塊,模塊文件名指派為“./plugins/插件目錄/插件模塊名.
        inc.php”,由 admincp.php 調(diào)用此模塊,調(diào)用 URL 將在后面的《編寫插件的原則與注意事項(xiàng)》中詳細(xì)說明。 
     4. 包含運(yùn)行(無菜單):可設(shè)置一個(gè)在論壇所有頁面均包含運(yùn)行的腳本,此腳本在 ./include/common.inc.php 中加載,腳本文件名
        指派為“./plugins/插件目錄/插件模塊名.inc.php”。請(qǐng)注意,為了不導(dǎo)致錯(cuò)誤的插件影響論壇運(yùn)行,在 common.inc.php 加載
        此模塊時(shí),屏蔽了錯(cuò)誤信息,因此請(qǐng)務(wù)必仔細(xì)檢查是否存在語法錯(cuò)誤,任何微小的語法錯(cuò)誤都將不被提示出來,并且導(dǎo)致此模塊不被
        正常加載。如果您配置了不正確的包含腳本而導(dǎo)致論壇系統(tǒng)設(shè)置無法使用,刪除服務(wù)器上相應(yīng)的腳本文件即可解決。

您可以為每個(gè)模塊設(shè)置不同的使用等級(jí),例如設(shè)置為“超級(jí)版主”,則超級(jí)版主及更高的管理者(例如論壇管理員)可以使用此模塊。

  • 插件鉤子設(shè)置:

插件鉤子能夠?qū)⒉寮a埋藏在程序中的任意位置,從而實(shí)現(xiàn)更加靈活的插件功能,最大限度的減少對(duì)原有程序代碼的修改。 論壇版本升級(jí)后,只需將相應(yīng)鉤子重新埋入相應(yīng)程序中,原有插件即可繼續(xù)使用。 關(guān)于插件鉤子的具體設(shè)計(jì)方法請(qǐng)見下面的《插件鉤子的設(shè)計(jì)》。

  • 插件變量配置:

插件接口中提供了一個(gè)通用的插件配置管理程序,在大多數(shù)情況下可實(shí)現(xiàn)插件的參數(shù)配置,省卻了插件開發(fā)者自行編寫后臺(tái)管理模塊(即上面提到的“后臺(tái)調(diào)用(后臺(tái)菜單)”模塊)的麻煩。通常情況下,應(yīng)優(yōu)先使用通用插件配置管理程序來實(shí)現(xiàn)插件的參數(shù)配置,只有在通用程序確實(shí)無法實(shí)現(xiàn)時(shí),才自行編寫后臺(tái)管理模塊。輸入配置名稱和配置變量名、選擇合適的配置類型后,即可為此插件增加一個(gè)配置變量,點(diǎn)“詳情”可以編輯此配置變量的更多信息。為了方便插件程序調(diào)用使用者配置好的參數(shù),配置變量同樣被存放在了緩存文件中,讀取方法將在后面的《參數(shù)讀取與緩存控制》中詳細(xì)說明。

注意:您只有在插件管理中將插件設(shè)置為“可用”,以上設(shè)置才能生效。