discuz在不一樣版本中獲取url參數
2.0 $_G['gp_uid']php
2.5 $_GET['uid']html
插件都能實現那些功能?
用戶功能:
頁面顯示嵌入點
前臺功能入口
菜單選項模塊前端
管理功能:
後臺管理功能入口數組
數據功能:
論壇主題數據處理模瀏覽器
插件開發三種狀態
文件
/config/config_global.php
變量
$_config['plugindeveler'] = 狀態
狀態
NULL:不開啓插件開發模式,不開啓嵌入點
1:開啓插件開發默認,不開啓嵌入點
2:開啓插件開發模式,開啓嵌入點ui
如何設計一個新插件
後臺-》應用-》插件-》設計新插件-》新增一個插件url
自定義模塊
後臺-》應用-》插件-》選擇插件-》模塊(新增一個插件的模塊)
自定義變量
選定插件-》設計-》變量 ,按狀況操做後,會出現左側樹形菜單中spa
嵌入點類型
一、頁面嵌入點
做用:修改頁面顯示
頁面嵌入點分爲三種類型
一、全局頁面嵌入點(通常以global做爲前綴,出如今公共模板上)
運行位置:公共模板頁面
二、普通頁面嵌入點(通常以模塊名做爲前綴,例如:forum,出如今模塊頁面上)
運行位置:普通模塊模板頁面
三、輸出前置頁面嵌入點
運行位置:模塊與模板間,處理數據
插件
頁面嵌入點類的命名規則
全局頁面嵌入點類(必須)
class plugin_插件標識符{}
普通嵌入點類
class plugin_插件標識符_入口文件名{}
(例如:forum.php?mod=viewthread&tid=1)debug
頁面嵌入點方法命名規則
全局頁面嵌入點方法
function global_任意(){}
輸出前置頁面嵌入點方法(模塊名就是mod後面的參數)
function 模塊名_任意_output(){}
普通頁面嵌入點方法
function 模塊名_任意(){}
二、信息提示嵌入點
做用:修改showmessage()
三、廣告嵌入點
做用:處理廣告位數據
四、功能嵌入點
做用:處理主題,帖子,頭像數據等
案例:建立一個頁面插件類
後臺-》應用-》插件-》模塊-》模塊類型選擇【頁面嵌入-普通版】-》xxx.class.php
進入插件的目錄新建一個xxx.class.php文件
<?php //全局嵌入點類(plugin_標識符) class plugin_ppctest{ //全局頁面嵌入點方法,必須寫在全局嵌入點類裏面,方法與嵌入點取名相同便可 function global_cpnav_extra1(){ //include template('ppctest:forum/ppctest'); return 'hello world!!!'; } } //普通嵌入點類(plugin_標識符_文件名),必須繼承全局嵌入點類 //例如:forum.php?mod=viewthread&tid=1,文件名就是forum class plugin_ppctest_forum extends plugin_ppctest{ //前置頁面嵌入點,會在頁面的最前面輸出出來 //在<html>以前,因此前置頁面嵌入點方法通常作數據處理使用 function index_sayhi_output(){ //通常作數據處理 global $_G; $_G['member']['username'] = 'hehe'; } //普通嵌入點方法取名,模塊名打頭,後面任意 //function 模塊名_任意(){} //例以下面的index模塊的status_extra方法 function index_status_extra(){ return 'baidu'; } }
頁面嵌入點的兩種返回值類型
字符串類型
示例:[string global_login_extra]
做用:普通數據顯示
數組類型:列表數據顯示(後面的那個/0是數組的索引值)
示例:[array forumdisplay_thread_subject/0]
做用:列表數據顯示
插件模板的定義規則
用法:
include template(插件標識符:模塊目錄名/模塊名稱)
示例:
include template('ppctest:forum/baidu');
對應
插件目錄/ppctest/template/forum/baidu.htm
注意:
在上面插件模板中,3.2的版本,直接在方法中include template能夠輸出至前端頁面了,而這以前的版本,須要配合{block}標籤,在include 進來的模板頁面使用html代碼,而後return $變量名出去,到前端使用
公共嵌入點
方法名:
common()
聲明位置:
公共嵌入點類
調用位置:
全部嵌入點
參數使用:
無
//全局嵌入點類(plugin_標識符) class plugin_ppctest{ //聲明公共嵌入點,在全部方法執行以前執行,能夠作一些常量,變量的處理 function common(){ global $_G; $_G['zhencheng'] = 'hello wolrd!!!'; } } class plugin_ppctest_forum extends plugin_ppctest{ function index_status_extra(){ global $_G;//聲明全局變量,爲方便使用common方法裏的定義的變量 return $_G['zhencheng'].'-baidu'; } }
信息嵌入點使用
方法名:
模塊名_任意名稱_message()
聲明位置:
腳本嵌入點類
調用位置:
當前腳本提示用戶信息時
參數使用:
方法參數
//例如,在forum.php文件中加入以下一段代碼 showmessage('info:這是一段提示信息','index.php'); //在嵌入類中寫入以下代碼 class plugin_ppctest_forum extends plugin_ppctest{ function index_test_message($p){ debug($p); } }
瀏覽器瀏覽forum.php就出現以下效果,說明能夠自定義一些message的效果 Array ( [param] => Array ( [0] => info:這是一段提示信息 [1] => index.php [2] => Array ( ) [3] => Array ( ) [4] => 0 ) )
廣告嵌入點使用
方法名:
ad_廣告嵌入點名稱()
聲明位置:
全局嵌入點類,腳本嵌入點類
調用位置:
對應的廣告位
參數使用:
方法參數
//下面用全局嵌入點類說明 //全局嵌入點類(plugin_標識符) class plugin_ppctest{ //方法ad_headerbanner經過開啓插件配置選項查詢到的 function ad_headerbanner(){ return '<a href="www.baidu.com">baidu</a>'; }
文本解析嵌入點使用
方法名:
discuzcode()
聲明位置:
全局嵌入點類
調用位置:
主題文本解析時
參數使用:
$_G['discuzcodemessage'],方法參數
//全局嵌入點類(plugin_標識符) class plugin_ppctest{ function discuzcode(){ global $_G; //下面代碼將會在每一個帖子後面加上」————zhencheng「 $_G['discuzmessage'].='————zhencheng'; } }
主題刪除嵌入點使用 方法名: deletethread() 聲明位置: 全局嵌入點類 調用位置: 主題被刪除前,後時 參數使用: $_G['deletethreadtids'],方法參數