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'],方法参数