PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > CMS教程 > discuz教程 > 正文

    Discuz插件制作教程【入门+精通+实战】

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:一、开发插件所需资料与工具 1、DiscuzX3 插件机制插件机制Discuz! 拥有一套完整的插件机制。合理使用插件机制,你可以更好的将自...
    •编写插件程序时,可能需要读取一些插件的信息,如果插件需要使用者进行配置,还需要读取使用者设置的参数值。Discuz! 允许插件程序使用数据库读取和缓存读取这两种方法获取插件信息和参数。Discuz! 的插件接口已经对插件信息进行了合理的缓存,使用缓存读取的方式,将比数据库读取速度更快,消耗的资源更是几乎可以忽略不计。缓存读取唯一的局限是需要插件使用插件接口提供的通用后台管理程序。如果使用自定义后台模块的方式,需要后台模块将参数存放到 pluginvars 数据表中,才能被系统正常缓存。我们强烈推荐您通过缓存读取插件信息和配置数据。
    •
    由于调用系统缓存统一通过“loadcache()”函数调用,并存放于 $_G['cache'] 中,因此“loadcache('plugin')”后插件的变量缓会存放于 $_G['cache']['plugin'] 中。嵌入点插件和以 plugin.php 为主脚本调用的插件无需加载此缓存,系统已自动加载了缓存。变量配置类型为“版块/*”的变量会保存在 $_G['cache']['forums'][fid]['plugin'] 中。变量配置类型为“用户组/*”的变量会保存在 $_G['cache']['usergroup_groupid']['plugin'] 和 $_G['group']['plugin'] 中。
    页面嵌入模块开发
    页面嵌入类型脚本格式<?php//全局嵌入点类(必须存在)class plugin_identifier {        function HookId_1() {                ......                return ...;        }        function HookId_2() {                ......                return ...;        }        ......}//脚本嵌入点类class plugin_identifier_CURSCRIPT extends plugin_identifier {        function HookId_1() {                ......                return ...;        }        function HookId_2() {                ......                return ...;        }        ......}?>
    •plugin_
    •普通版脚本中的类名以 plugin_ 开头。手机版脚本中的类名以 mobileplugin_ 开头。
    •identifier
    •插件的唯一标识符,在插件设置中设置。
    •CURSCRIPT
    •嵌入点位于的脚本名,如 forum.php 为 forum。
    •HookId
     
     
     
     
    函数名 调用位置 声明位置 参数含义
    HookId() 所有模块执行前被调用 脚本嵌入点类
    HookId_output($value) 模块执行完毕,模板输出前被调用 脚本嵌入点类 $value: array('template' => 当前要输出的模版,'message' => showmessage 的信息内容,'values' => showmessage 的信息变量,
    )
    global_HookId() 模块执行完毕,模板输出前被调用 全局嵌入点类
    HookId_message($value) showmessage() 执行时调用 脚本嵌入点类 $value: array('param' => showmessage() 函数的参数数组,
    )
    ad_adId($value) 相应的广告位中调用
    函数名为广告位脚本 ID 如:ad_headerbanner() 全局嵌入点类
    脚本嵌入点类 $value: array('params' => 广告位参数,'content' => 当前广告位原本将要显示的内容,
    )
    common() 所有模块执行前被调用 全局嵌入点类
    discuzcode($value) discuzcode() 函数执行时调用
    用于在帖子内容解析时嵌入自己的功能,函数中 $_G['discuzcodemessage'] 变量为待解析的字串 全局嵌入点类 $value: array('param' => caller 函数的参数数组,'caller' => caller 函数,此嵌入点被哪个函数调用'discuzcode' 被 discuzcode() 调用'messagecutstr' 被 messagecutstr() 调用
    )
    deletethread($value) deletethread() 函数执行时调用
    用于在主题删除前后嵌入自己的功能,此函数将在 deletethread() 中被调用 2 次,函数中 $_G['deletethreadtids'] 变量为待处理的 TID 数组 全局嵌入点类 $value: array('param' => deletethread() 函数的参数数组,'step' => 删除的步骤'check' 检测步骤'delete' 删除步骤
    )
    deletepost($value) deletepost() 函数执行时调用
    用于在帖子删除前后嵌入自己的功能,此函数将在 deletepost() 中被调用 2 次,函数中 $_G['deletepostids'] 变量为待处理的 ID 数组 全局嵌入点类 $value: array('param' => deletepost() 函数的参数数组,'step' => 删除的步骤'check' 检测步骤'delete' 删除步骤
    )
    avatar($value)
    (X2.5 新增) avatar() 函数执行时调用
    用于在头像调用时嵌入自己的功能,函数中 $_G['hookavatar'] 变量为新头像返回值 全局嵌入点类 $value: array('param' => avatar() 函数的参数数组
    )
    profile_node($post, $start, $end)
    (X3.0 新增) 贴内用户信息标记,返回值为标记显示内容 全局嵌入点类 $post: 当前帖子信息数组
    $start: 用户填写的前置字符
    $end: 用户填写的后置字符
    要查看所有的预定义嵌入点,请打开 config/config_global.php 文件,将文件结尾添加的设计者模式值改成“2”,然后更新缓存即可。在页面源码中查找"<hook>"可搜索到嵌入点。(详细内容可参阅的《插件嵌入点列表》)
    $_config['plugindeveloper'] = 2;
    预定义的嵌入点会在页面预置
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-106-782-1.html
    相关热词搜索: Discuz插件