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

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

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

  1. <?php
  2.  
  3. //判断是否被常规请求
  4. defined('IN_DISCUZ') or die('Access Denied');
  5.  
  6. //全局嵌入类
  7. class plugin_插件标识符 {
  8.  
  9. }
  10.  
  11. //模块嵌入类
  12. class plugin_插件标识符_forum extends plugin_插件标识符 {
  13.  
  14. }

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

  1. <?php
  2.  
  3. //判断是否被常规请求
  4. defined('IN_DISCUZ') or die('Access Denied');
  5.  
  6. //全局嵌入类
  7. class plugin_post_notice {
  8.  
  9. }
  10.  
  11. //模块嵌入类
  12. class plugin_post_notice_forum extends plugin_post_notice {
  13. //嵌入贴子发表的钩子函数
  14. public function post_top() {
  15. //当前$_G成为全局$_G的一个引用
  16. global $_G;
  17. $mForumPostNotice = C::t('#post_notice#forum_post_notice');
  18. $isNotice = $mForumPostNotice->getNoticeState($_G['uid']);
  19.  
  20. return $isNotice ? lang('plugin/post_notice', 'enable_notice') :
  21. lang('plugin/post_notice', 'disable_notice');
  22. }
  23. }
除了页面上可以看到的嵌入点,discuz在所有模块执行前,都会执行嵌入函数(钩子)。
 

discuz回贴通知插件实现-页面嵌入点(钩子)的更多相关文章

  1. discuz回贴通知插件实现-显示用户状态设置

    一.完善用户是否开启回贴通知 回贴通知插件建立模块时,指定了核心文件post_set.inc.php   1.创立好数据库 建立独立数据表(不建议直接修改原有的discuz数据库,防止discuz升级 ...

  2. discuz回贴通知插件实现-插件的多语言

    如果涉及到页面的展示,模板,提示信息,通常会   1.建立好需要的文字的翻译 在disucz的data/plugindata目录创建一个插件所使用的语言文件,命名方式为: 插件标识符.lang.php ...

  3. discuz回贴通知插件实现-获取邮件内容

    //自定义钩子函数,命名:模块_函数名_output()或模块_函数名() //一个是模块执行完,模板输出前执行.一个是模块执行前 //post_reply_output函数会在所有post操作中都会 ...

  4. discuz回贴通知插件实现-插件后台管理配置

    1.登出discuz后台,再次设计插件 2.使用变量    

  5. discuz回贴通知插件实现-用户状态设置

    1.获取用户提交数据 discuz通过$_GET来获取全部数据,包括($_GET,$_POST). else if($_GET['pluginop'] == 'set') { //获取用户提交数据 $ ...

  6. discuz回贴通知插件实现-发送邮件

    通过discuz的sendmail()来发送邮件 //引入发送邮件的函数文件 include libfile('function/mail'); //设置收件人地址,标题,内容发送邮件 sendmai ...

  7. discuz回贴通知插件实现-配置邮件服务器

    添加smtp服务器,填写相应的smtp服务器,发信人地址,用户名和密码.   填写发件人地址和收件人地址来测试邮件是否发送成功.

  8. discuz目录结构和插件创建

    discuz目录结构 api 外部接口功能实现 archiver 静态文档,静态化所用 config 配置 data 生成的数据 install 安装目录 source 源代码核心目录 |--modu ...

  9. noty – jQuery通知插件

    noty是一个jQuery的通知(信息提示)插件,灵活轻便,是一个非常棒的用于替代传统提示对话框的插件. 当前最新版本为2.1.0: 从https://github.com/needim/noty 可 ...

随机推荐

  1. 激活函数sigmoid、tanh、relu、Swish

    激活函数的作用主要是引入非线性因素,解决线性模型表达能力不足的缺陷 sigmoid函数可以从图像中看出,当x向两端走的时候,y值越来越接近1和-1,这种现象称为饱和,饱和意味着当x=100和x=100 ...

  2. 类继承-super, 私有变量

    多继承 class A: def ces(self): print('a-ces') class B(A): def ces(self): print('b-ces') class C(A): def ...

  3. 动态html处理和及其图像识别

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCli ...

  4. linux添加计划任务

    crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.可以用以下的 ...

  5. 29. 在Linux上使用unzip解压以默认编码解压,中文文件名会出现乱码

    解决办法: 下载p7zip-9.13-1.el5.rf.x86_64.rpm和p7zip-plugins-9.13-1.el5.rf.x86_64.rpm包 用以下方法安装后,使用7z x filen ...

  6. ubuntu 安装 环境

    svn   https://blog.csdn.net/leibris/article/details/72982804         https://blog.csdn.net/frankchen ...

  7. 在 html中怎么获取中的参数

    参考:https://blog.csdn.net/xqhys/article/details/68486215 eg: window.location.href="/user/update? ...

  8. 3.mybatis实战教程(mybatis in action)之三:实现数据的增删改查

    转自:https://blog.csdn.net/tangruyi1992/article/details/52583910 前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User. ...

  9. nodejs 获取文件夹中所有文件、图片 名

    //获取项目工程里的图片 var fs = require('fs');//引用文件系统模块 var image = require("imageinfo"); //引用image ...

  10. Unresolved external CheckAutoResult

    // [Linker   Error]Unresolved   external   'System::__linkproc__   __fastcall   CheckAutoResult() '  ...