1、如何保证主题被回复时业务代码被执行。

2、获得主题,主题发布者,贴子等信息。
3、discuz发送email邮件。
 
discuz使用嵌入点(钩子)来处理代码的执行时机。
discuz回贴通知插件实现-页面嵌入点(钩子) - 怀素真 - 因上努力 果上随缘
当用户开启插件开发者模式时,页面上会输出提供好的预先定义的嵌入点。
 
例如:我们需要在用户发贴时,告知用户是否开启了回贴通知。
discuz回贴通知插件实现-页面嵌入点(钩子) - 怀素真 - 因上努力 果上随缘
1、我们在插件后台添加页面嵌入
discuz回贴通知插件实现-页面嵌入点(钩子) - 怀素真 - 因上努力 果上随缘
2、在插件目录下创建noticeme.class.php文件
该文件为类文件,定义该插件的嵌入类,该类中的方法就是嵌入点中的钩子方法。

 嵌入类:1、全局嵌入类,2、模块嵌入类

<?php

//判断是否被常规请求
defined(\'IN_DISCUZ\') or die(\'Access Denied\');

//全局嵌入类
class plugin_插件标识符 {
    
}

//模块嵌入类
class plugin_插件标识符_forum extends plugin_插件标识符 {
    
}

通过嵌入点,选择使用嵌入类。

<?php

//判断是否被常规请求
defined(\'IN_DISCUZ\') or die(\'Access Denied\');

//全局嵌入类
class plugin_post_notice {
    
}

//模块嵌入类
class plugin_post_notice_forum extends plugin_post_notice {
    //嵌入贴子发表的钩子函数
    public function post_top() {
        //当前$_G成为全局$_G的一个引用
        global $_G;
        $mForumPostNotice = C::t(\'#post_notice#forum_post_notice\');
        $isNotice = $mForumPostNotice->getNoticeState($_G[\'uid\']);
        
        return $isNotice ? lang(\'plugin/post_notice\', \'enable_notice\') : 
        lang(\'plugin/post_notice\', \'disable_notice\');
    }
}
discuz回贴通知插件实现-页面嵌入点(钩子) - 怀素真 - 因上努力 果上随缘

 

除了页面上可以看到的嵌入点,discuz在所有模块执行前,都会执行嵌入函数(钩子)。
 

 

 

版权声明:本文为jkko123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jkko123/p/6294648.html