1、如何保證主題被回復時業務代碼被執行。
通過嵌入點,選擇使用嵌入類。
2、獲得主題,主題發布者,貼子等信息。
3、discuz發送email郵件。
discuz使用嵌入點(鈎子)來處理代碼的執行時機。

當用戶開啟插件開發者模式時,頁面上會輸出提供好的預先定義的嵌入點。
例如:我們需要在用戶發貼時,告知用戶是否開啟了回貼通知。

1、我們在插件后台添加頁面嵌入

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在所有模塊執行前,都會執行嵌入函數(鈎子)。