discuz的插件使用

插件的建立和配置

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

相关文章
相关标签/搜索