DZ外掛製作簡易入門教程(自學手記)第一篇
看了Maple-x和泡哥寫的那兩篇外掛製作教程,還是讓我如雲裡霧裡。後經仔細研究外掛例項,總算有所收穫,但彎路走了不少。為避免後來者重蹈覆轍,在此總結成文,算做個筆記好了。
就用最經典的專案名稱Hello Word!來講。
效果圖:
第一步 建立相關檔案及目錄結構
1.1 隨便在那裡建立一個新資料夾。
1.2 在建立好的新資料夾裡按下圖結構和名稱建立子目錄和檔案。
*檔案先用記事本建立空的文字檔案然後改名就可以了,以後再編輯這些檔案的內容。
*改名的時候注意調整系統的資料夾選項不要隱藏副檔名。
第二步 在後臺系統設定裡新增外掛的相關資訊
2.1 進後臺->擴充套件->論壇外掛->管理,按圖填寫相關內容並提交。
*唯一識別符號不要有空格和標點符號。
2.2 勾上“可用”後再提交一次,然後點最後邊的“詳情”進入下一步。
2.3 設定外掛詳細資訊,設定好後點選提交,然後點選本頁頭部的“模組”進入下一步。
*版權資訊填你自己想填的內容^_^,不一定要跟我的一樣
*外掛目錄的名字要與第一步裡建立的資料夾中/plugins/下的資料夾名稱一致,本例中為helloworld。
*外掛目錄末尾要加“/”,參照上圖。
*因為暫時沒有用到資料庫,所以外掛資料表為空。
*外掛描述隨便填不填、填什麼都可以。
2.4 設定模組資訊,提交。
*程式模組要與第一步裡建立的資料夾中/plugins/helloworld/下的*.inc.php檔案的名稱一致。本例中為helloworld。
*選單名稱就是將來在論壇頁面上顯示的標籤的名字,一定要填,不然標籤顯示不出來。
*模組型別有好幾種,詳細介紹請參見DZ論壇使用者手冊。本例中選“前臺呼叫(前臺選單)”。
*使用等級即該模組(或“頁面”)的訪問許可權,自酌。
2.5 如果一切順利,現在外掛管理裡面就出現設定好的外掛了。
*如果要調整什麼引數,點“管理”->相應外掛的“詳細”。
第三步 編輯外掛檔案內容,實現外掛功能
3.1 編輯模版檔案hw_helloworld.htm的內容並儲存,參考如下:
- {template header}
- <div id="nav"><a href="$indexname">$bbname</a></div>
- <div style="width:960px; background-color:#FFF;">
- <div class="mainbox">
- <table align="center" cellpadding="5">
- <tr>
- <td bgcolor="#999999">打個招呼~</td>
- </tr>
- <tr>
- <td height="265"><div align="center">$say_string</div></td>
- </tr>
- </table>
- </div></div>
- {template footer}
*模版檔案是外掛全部的樣子或介面,也就是你的外掛將以什麼樣的面貌呈現在使用者的瀏覽器中。
*模版檔案實際上是外掛程式模組的一部分,通過在程式模組(*.inc.php)中include()發揮作用。單獨把模版從程式模組中分離出來是為了方便應用論壇的樣式。如果對程式設計比較熟悉的話,這個和C++中.form檔案和.CPP檔案的關係有點類似。
*本例中,模版檔案hw_helloworld.htm首行{template header}的和最後一行的{template footer},分別引用了論壇的header和footer模版,程式碼第3行加入了導航條,也就是說,外掛將在論壇頁面中間部分出現,好像“插”在論壇裡一樣^_^。如果刪除{template
header}和{template footer},則頁面將以很獨立的面貌呈現,好像跟論壇一點關係也沒有一樣。
*本例的模版檔案包含了最基本元素,替換裡面表格的內容就可以做出想要的外掛介面。
*模版檔案字尾名是.htm,所以可以像普通htm頁面一樣用javascript來實現一些頁面元素的動態化。如果在裡面用<?
... ?>是不能被解釋執行的,因為前面說過,模版檔案要發揮作用,要在程式模組檔案中include(),在PHP程式段裡再引用PHP能不出錯嗎?也正是因為這一點,在模版檔案裡可以不用加<?...?>標記直接引用PHP的變數值。這其實就夠了,因為模版檔案其實就是用來處理表單提交和資料反饋用的,這也是PHP程式強大的地方。
*基於上一點,我們在第13行,引入一個$say_string,具體見下一步。
3.2 編輯外掛程式模組檔案helloworld.inc.php並儲存,參考內容:
- <?
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- if(!$discuz_uid) {
- showmessage('not_loggedin', null, 'NOPERM');
- }
- include DISCUZ_ROOT.'./forumdata/cache/plugin_'.$identifier.'.php';
- $say_string = 'Hello World!' ;
- include template('hw_helloworld');
- ?>
*第1行到第8行是與論壇安全相關的語句,一定要寫!DZ論壇的外掛沒有不寫這幾句的。
*第10行是載入外掛頁面快取,提高執行效率。
*第12行,定義一個$say_string字串變數,賦值“Hello World!”,外掛執行以後,這個值就通過模版檔案顯示出來了。
*第14行,將模版檔案包含進來,讓程式模組這個靈魂能有一個軀殼^_^。為了防止一些莫名其妙的錯誤,習慣性的將模版的include()放在最後。
*程式模組檔案helloworld.inc.php是外掛程式的起點,呼叫它的是論壇的plugin.php。打個比方,plugin.php是傳送帶,只要論壇在執行,這個傳送帶就在轉。我們只是把我們的外掛放到了這個傳送帶上一起運轉。
3.3 儲存好所有檔案,將plugins和templates用FTP上傳,或直接Copy到論壇檔案根目錄下。
3.4 確保在後臺 介面->介面設定->導航欄 啟用了“外掛”, 在 擴充套件->論壇外掛->管理 啟用了對應外掛,清除一下快取,重新整理論壇首頁,就能看到結果了。
最後,總結一下我理解的DZ論壇外掛的執行機理與檔案間邏輯關係圖:
模版檔案我用了字首hw_是為了以後擴充套件模版,因為可以通過程式模組根據條件裝載不同的模版,這個以後再說吧。
今天就先寫到這裡。
相關文章
- xlam外掛製作實驗手冊
- jQuery外掛製作簡單介紹jQuery
- Dreamweaver製作簡易的拼圖遊戲教程遊戲
- 10個很棒的 jQuery 外掛和製作教程jQuery
- 前端圖表外掛ECharts入門教程前端Echarts
- gitbook 入門教程之實用外掛(新增3個外掛)Git
- BSD Socket 簡易入門手冊(轉)
- 網頁外掛製作網頁
- CSS工具-Flexbox簡易入門教程CSSFlex
- gitbook 入門教程之主題外掛(初稿)Git
- webpack4入門筆記——外掛Web筆記
- jQuery入門筆記之(七)外掛jQuery筆記
- 如何製作 Sketch 外掛
- CMake簡易入門
- gdb 簡易入門
- Chrome外掛入門Chrome
- Vim外掛入門
- 給萌新的Flexbox簡易入門教程Flex
- Go Web開發(Gin框架)簡易入門教程GoWeb框架
- java,製作簡易畫圖板Java
- 圖片指令碼懶載入簡易版外掛 LazyLoad指令碼
- 「12步」製作 Laravel 外掛 (一)Laravel
- jQuery如何製作自定義外掛jQuery
- 簡易的伺服器介面開發入門教程伺服器
- GitHub 簡易入門指南Github
- Git簡易快速入門Git
- 製作一個超簡單的全屏外掛(基於JQuery)jQuery
- TypeScript 入門自學筆記(一)TypeScript筆記
- ROM簡單製作教程
- 【入門】Hello Rust!自學簡明扼要Rust
- chrome外掛開發簡介(一)——開發入門Chrome
- 遊戲製作詳解自----OpenGL入門教程(九)(轉)遊戲
- 遊戲製作詳解自----OpenGL入門教程(五)(轉)遊戲
- 遊戲製作詳解自----OpenGL入門教程(四)(轉)遊戲
- 【練習】製作簡易通訊錄
- 簡易rpm套件的製作(轉)套件
- flutter使用platform-channels製作外掛FlutterPlatform
- npm製作外掛、釋出及更新NPM