DZ插件制作简易入门教程(自学手记)第二篇
謝謝大家的鼓勵和幫助,我會繼續寫下去。工作忙,只能周末寥寥幾筆,不當之處,請指正,我會修改的。
在開篇中,可以說已經做完了一個完整的插件。不過功能很簡單,只能在表格中央顯示“Hello World!”。下面來做一件事,實現對插件中央顯示的文字進行設定。
有兩種方法可以達到這一目的。
方法一:利用DISCUZ論壇插件管理的自定義變量。
1.1 進入后臺->擴展->論壇插件->管理->詳情->變量
?
*配置名稱意思是該項設定的名稱(好像有點廢話^_^)。
*配置變量名是指該項設定所控制的變量。
*配置類型中有很多種類,因為該例中要設定的是一個字符串,所以選字串。
1.2 上一步完成后,在后臺->擴展->論壇插件,插件列表Hello World插件下面會出現一項參數設置。
?
1.3 點擊參數設置后就能看見所設置的配置(變量)了。
?
1.4 為正確顯示出所設定的內容,對插件程序模塊文件helloworld.inc.php進行編輯并保存。
*如果打開該文件可以發現設定的配置變量say_string存放在一個數組$_DPLUGIN['helloworld']中,名字為$say_string,PHP中變量前面都要有$符號。程序的11、12行代碼就是將此數組“解開”,以得到$say_string變量。關于extract函數和其它語句的的詳細內容請參考PHP手冊。
1.5 保存后可以嘗試在本篇步驟1.3的界面中提交新值,插件界面上的值應該有變化了。
?
?
方法二:自己編寫插件設定程序
DISCUZ的自定義配置變量基本能夠滿足一般插件的設定需求,但是對比較高級和復雜的插件,還是自己編寫設定程序比較好。下面還以Hello World項目為例子,順帶簡單說一下怎么引用和操作數據庫。
2.1 在論壇根目錄\plugins\helloworld下新建一個文件setting.inc.php,在論壇根目錄\templates\default下新建一個文件hw_setting.htm。
2.2 在后臺插件模塊頁面為Hello World插件添加一個程序模塊。
?
2.3 在DISCUZ論壇的數據庫中添加一張數據表命名為cdb_plugin_helloworld,建立一個字段say_string。并插入一條記錄,隨便什么內容吧。我是用phpmyadmin來做這件事的,具體怎么操作請參考mysql手冊。
?
2.4 編輯hw_setting.htm,創建一個提交數據的界面。
?
表單部分的代碼如下:
*表單中必須要有一個name為formhash的隱藏標簽(代碼第6行),用于傳送表單的哈希值進行安全性驗證。其值要事先準備好,這一點見下一步。
*因為是通過“后臺調用(后臺菜單)”的方式用admincp.php來執行,所以,setting模版的開頭和結尾不用加{template header}和{template footer},這一點將在以后討論。
2.5 編輯setting.inc.php的內容如下:
*如果沒有表單提交,則查詢數據庫,獲取所需的數據。代碼第7行對數據進行查詢,返回資源號給$query。第9行將此“資源”中的數據提出賦值給$hw_field,得到的$hw_field實際上是一個數組,有點類似ASP中的記錄集,但是又有區別,因為是一個數組,所以沒有游標的概念。本例中只有1條記錄,如果返回的記錄有很多個,則要用while()循環遍歷:
*第13行是為模版中的表單生成哈希值,很簡單,直接引用FORMHASH(注意全是大寫)就可以了。這里做了一下傳遞,是因為:我發現模版文件中的代碼好像要被處理過才執行,只認得$打頭的變量。
*因為是通過“后臺調用(后臺菜單)”的方式用admincp.php來執行,admmincp.php已經進行了權限驗證,所以這里一般不用再對權限做檢查了。
2.6 編輯前臺程序helloworld.inc.php文件,引用數據庫中的數據傳遞給模版,代碼如下:
2.7保存所有程序,在后臺->擴展->論壇插件->設置的hello world插件下就會多一項“Hello World!設置”,這個就是我們自己做的插件設定程序,快試試吧。
?
*前面有項“參數設置”是因為在本篇開頭1.1中我們添加了一個配置變量,只要刪除那個配置變量,這一項就沒有了。
總結:直到接觸到了數據庫,我才體會到了PHP的優勢。雖然它不像ASP那樣豪華,但高效,簡潔。今天帖子的源代碼中引用了一些DISCUZ自有的函數和類,如submitcheck()、cpmsg()、$db->query()、$db->fetch_array()等等。DISCUZ論壇的絕大多數函數分別在論壇根目錄\admin\global.func.php和\include\global.func.php中定義,數據庫的類在\include\db_mysql.class.php中定義。其實如果仔細研究DISCUZ論壇后綴名為.func.php和.class.php的文件能發現很多好東西^_^。只可惜里面什么注釋都沒有,函數型只能一點一點爬代碼。真希望能盡快出一份DISCUZ函數手冊。如果已經有了,請一定告訴我,急需!
?
海口論壇 ?http://www.souhaikou.com
海口同城微博 http://t.souhaikou.com
總結
以上是生活随笔為你收集整理的DZ插件制作简易入门教程(自学手记)第二篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写给XJTU计算机系大一大二的童鞋
- 下一篇: SEO分析关键词策略