插件机制

页面嵌入

脚本格式

<?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() 模块执行完毕,模板输出前被调用 脚本嵌入点类 array(
'template' => 当前要输出的模版,
'message' => showmessage 的信息内容,
'values' => showmessage 的信息变量,

)

global_HookId() 模块执行完毕,模板输出前被调用 全局嵌入点类
HookId_message() showmessage() 执行时调用 脚本嵌入点类 array(
'param' => showmessage() 函数的参数数组,

)

ad_adId() 相应的广告位中调用

函数名为广告位脚本 ID如:ad_headerbanner()

全局嵌入点类

脚本嵌入点类

array(
'params' => 广告位参数,
'content' => 当前广告位原本将要显示的内容,

)

common() 所有模块执行前被调用 全局嵌入点类
discuzcode() discuzcode() 函数执行时调用

用于在帖子内容解析时嵌入自己的功能,函数中 $_G['discuzcodemessage'] 变量为待解析的字串

全局嵌入点类 array(
'param' => caller 函数的参数数组,
'caller' => caller 函数,此嵌入点被哪个函数调用
'discuzcode' 被 discuzcode() 调用
'messagecutstr' 被 messagecutstr() 调用

)

deletethread() deletethread() 函数执行时调用

用于在主题删除前后嵌入自己的功能,此函数将在 deletethread() 中被调用 2 次,函数中 $_G['deletethreadtids'] 变量为待处理的 TID 数组

全局嵌入点类 array(
'param' => deletethread() 函数的参数数组,
'step' => 删除的步骤
'check' 检测步骤
'delete' 删除步骤

)

deletepost() deletepost() 函数执行时调用

用于在帖子删除前后嵌入自己的功能,此函数将在 deletepost() 中被调用 2 次,函数中 $_G['deletepostids'] 变量为待处理的 ID 数组

全局嵌入点类 array(
'param' => deletepost() 函数的参数数组,
'step' => 删除的步骤
'check' 检测步骤
'delete' 删除步骤

)

avatar()

(X2.5 新增)

avatar() 函数执行时调用

用于在头像调用时嵌入自己的功能,函数中 $_G['hookavatar'] 变量为新头像返回值

全局嵌入点类 array(
'param' => avatar() 函数的参数数组

)

要查看所有的预定义嵌入点,请打开 config/config_global.php 文件,将文件结尾添加的设计者模式值改成"2",然后更新缓存即可。在页面源码中查找"<hook>"可搜索到嵌入点。(详细内容可参阅的《插件嵌入点列表》)

$_config['plugindeveloper'] = 2;

预定义的嵌入点会在页面预置好的位置输出函数返回的内容。函数返回值类型如果是 array 且是空值的,必须输出一个空数组,如:

return array();

函数名并不限于以上列表,您可以自定义,只要符合以下规则,函数就会在适当的地方被调用。

function CURMODULE_USERDEFINE[_output]()

CURMODULE 指明了此函数在哪个模块执行,可通过常量 CURMODULE 得到当前页面的 CURMODULE 值。 USERDEFINE 可自定义,如果函数名以"_output"结尾则会在模板输出前调用,否则会在模块执行前调用。如:attachment_test() 函数会在论坛的下载附件的时候执行。"_output"结尾的函数的第一个参数为数组,含义为 array('template' => 要输出的模板名, 'message' => showmessage 的文字) 如:以下函数将在登录的时候输出调试文字

function logging_test_output($a) {
	print_r($a);
	print_r($_POST);
}

plugin_identifier 类中的其它函数为了便于阅读建议以"_"开头,如:

<?php

class plugin_sample {

	function _updatecache() {
		......
		return ...;
	}

}

class plugin_sample_forum extends plugin_sample {

	function viewthread_posttop() {
		......
		return ...;
	}

	......

}

?>

插件嵌入点列表

  • 全局(common/)
 extcredits.htm
     string spacecp_credit_extra
 faq.htm
     string faq_extra
 footer.htm
     string global_footer
     string global_footerlink
 header.htm
     string global_cpnav_top (X2.5)
     string global_cpnav_extra1
     string global_cpnav_extra2
     string global_usernav_extra1
     string global_usernav_extra2
     string global_usernav_extra3
     string global_usernav_extra4 (X2.5)
     string global_nav_extra (X2.5)
     string global_header
 userabout.htm
     array global_userabout_top
     string userapp_menu_top
     string userapp_menu_middle
     array global_userabout_bottom
  • 论坛(forum/)
 collection_all.htm (X2.5)
     string collection_index_top
     string collection_index_bottom
 collection_comment.htm (X2.5)
     string collection_nav_extra
 collection_index.htm (X2.5)
     string collection_index_top
     string collection_index_bottom
 collection_mycollection.htm (X2.5)
     string collection_index_top
     string collection_index_bottom
 collection_nav.htm (X2.5)
     string collection_nav_extra
 collection_view.htm (X2.5)
     string collection_viewoptions
     string collection_view_top
     string collection_threadlistbottom
     string collection_relatedop
     string collection_view_bottom
     string collection_side_bottom
 discuz.htm
     string index_status_extra
     string index_nav_extra (X2.5)
     string index_top
     string index_catlist_top (X2.5)
     array index_favforum_extra (X2.5)
     array index_catlist (X2.5)
     array index_forum_extra (X2.5)
     array index_forum_extra (X2.5)
     string index_middle
     string index_bottom
     string index_side_top
     string index_side_bottom
 discuzcode.htm
     array viewthread_attach_extra (X2.5)
 editor_menu_forum.htm
     string post_image_btn_extra
     string post_image_tab_extra
     string post_attach_btn_extra
     string post_attach_tab_extra
 forumdisplay.htm
     string forumdisplay_leftside_top
     string forumdisplay_leftside_bottom
     string forumdisplay_forumaction
     string forumdisplay_modlink
     string forumdisplay_top
     string forumdisplay_middle
     string forumdisplay_postbutton_top
     string forumdisplay_threadtype_inner (X2.5)
     string forumdisplay_filter_extra (X2.5)
     string forumdisplay_threadtype_extra (X2.5)
     string forumdisplay_bottom
     string forumdisplay_side_top
     string forumdisplay_side_bottom
 forumdisplay_fastpost.htm
     string forumdisplay_fastpost_content
     string forumdisplay_fastpost_func_extra
     string forumdisplay_fastpost_ctrl_extra
     string global_login_text
     string forumdisplay_fastpost_btn_extra
     string forumdisplay_fastpost_sync_method
 forumdisplay_list.htm
     string forumdisplay_filter_extra
     array forumdisplay_thread
     array forumdisplay_thread_subject (X2.5)
     array forumdisplay_author
     array forumdisplay_thread (X2.5)
     array forumdisplay_author (X2.5)
     string forumdisplay_threadlist_bottom (X2.5)
     string forumdisplay_postbutton_bottom
 forumdisplay_sort.htm (X2.5)
     string forumdisplay_postbutton_bottom
 forumdisplay_subforum.htm (X2.5)
     array forumdisplay_subforum_extra
     array forumdisplay_subforum_extra
 guide.htm
     string guide_nav_extra
     string guide_top
     string guide_bottom
 guide_list_row.htm (X2.5)
     array forumdisplay_thread
 index_navbar.htm
     string index_navbar
 post.htm
     string post_top
     string post_middle
     string post_btn_extra
     string post_sync_method
     string post_bottom
 post_activity.htm
     string post_activity_extra
 post_debate.htm
     string post_debate_extra
 post_editor_body.htm
     string post_editorctrl_right
     string post_editorctrl_left
     string post_editorctrl_top
     string post_editorctrl_bottom
 post_editor_option.htm
     string post_side_top
     string post_side_bottom
 post_infloat.htm
     string post_infloat_top
     string post_infloat_middle
     string post_infloat_btn_extra
 post_poll.htm
     string post_poll_extra
 post_reward.htm
     string post_reward_extra
 post_trade.htm
     string post_trade_extra
 topicadmin_modlayer.htm
     string forumdisplay_modlayer
     string modcp_modlayer
 trade_info.htm
     string viewthread_tradeinfo_extra
 viewthread.htm
     string viewthread_top
     string viewthread_postbutton_top
     string viewthread_modoption
     string viewthread_beginline (X2.5)
     string viewthread_title_extra
     string viewthread_title_row
     string viewthread_middle
     string viewthread_bottom
 viewthread_activity.htm
     string viewthread_activity_extra1
     string viewthread_activity_extra2
 viewthread_fastpost.htm
     string viewthread_fastpost_side
     string viewthread_fastpost_content
     string viewthread_fastpost_func_extra
     string viewthread_fastpost_ctrl_extra
     string global_login_text
     string viewthread_fastpost_btn_extra (X2.5)
 viewthread_from_node.htm
     array viewthread_postheader
     array viewthread_postheader
     array viewthread_postheader
     array viewthread_endline
 viewthread_node.htm
     array viewthread_profileside
     array viewthread_imicons
     array viewthread_magic_user
     array viewthread_avatar
     array viewthread_sidetop
     array viewthread_sidebottom
     array viewthread_postheader
     string viewthread_modaction (X2.5)
     string viewthread_share_method
     string viewthread_useraction
     array viewthread_postsightmlafter (X2.5)
     array viewthread_postfooter
     array viewthread_postaction (X2.5)
     string viewthread_magic_thread
     array viewthread_magic_post
     array viewthread_endline
 viewthread_node_body.htm
     array viewthread_posttop
     string global_login_text
     array viewthread_postbottom
 viewthread_poll.htm
     string viewthread_poll_top
     string viewthread_poll_bottom
 viewthread_portal.htm
     string viewthread_useraction_prefix
     string viewthread_useraction
     string viewthread_side_bottom
 viewthread_trade.htm
     array viewthread_trade_extra
  • 群组(group/)
 group.htm
     string group_navlink
     string forumdisplay_navlink
     string group_navlink
     string forumdisplay_navlink
     string group_top
     string forumdisplay_top
     string group_nav_extra
     string forumdisplay_nav_extra
     string group_bottom
     string forumdisplay_bottom
     string group_side_bottom
     string forumdisplay_side_bottom
 group_list.htm
     string forumdisplay_postbutton_top
     string forumdisplay_filter_extra
     array forumdisplay_thread
     string forumdisplay_postbutton_bottom
 group_my.htm
     string my_header
     string my_bottom
     string my_side_top
     string my_side_bottom
 group_right.htm
     string group_index_side
     string group_side_top
     string forumdisplay_side_top
 index.htm
     string index_header
     string index_top
     string index_bottom
     string index_side_top
     string index_side_bottom
 type.htm
     string index_top
     array index_grouplist
     string index_bottom
     string index_side_top
     string index_side_bottom
  • 家园(home/)
 follow_feed.htm (X2.5)
     string follow_nav_extra
     string follow_top
 spacecp_avatar.htm
     string spacecp_avatar_top
     string spacecp_avatar_bottom
 spacecp_blog.htm
     string spacecp_blog_top
     string spacecp_blog_middle
     string spacecp_blog_bottom
 spacecp_credit_base.htm
     string spacecp_credit_top
     string spacecp_credit_extra
     string spacecp_credit_bottom
 spacecp_credit_log.htm
     string spacecp_credit_top
     string spacecp_credit_bottom
 spacecp_privacy.htm
     string spacecp_privacy_top
     string spacecp_privacy_base_extra
     string spacecp_privacy_feed_extra
     string spacecp_privacy_bottom
 spacecp_profile.htm
     string spacecp_profile_top
     string spacecp_profile_extra
     string spacecp_profile_bottom
 spacecp_promotion.htm
     string spacecp_promotion_top
     string spacecp_promotion_bottom
 spacecp_usergroup.htm
     string spacecp_usergroup_top
     string spacecp_usergroup_bottom
     string spacecp_usergroup_top
     string spacecp_usergroup_bottom
     string spacecp_usergroup_top
     string spacecp_usergroup_bottom
 space_album_pic.htm
     string space_album_pic_top
     string space_album_pic_op_extra
     string space_album_pic_bottom
     string space_album_pic_face_extra
 space_album_view.htm
     string space_album_op_extra
 space_blog_list.htm
     array space_blog_list_status
 space_blog_view.htm
     string space_blog_title
     string space_blog_share_method (X2.5)
     string space_blog_op_extra
     string space_blog_face_extra
 space_card.htm
     string space_card_top
     string space_card_baseinfo_middle
     string space_card_baseinfo_bottom
     string space_card_option
     string space_card_magic_user
     string space_card_bottom
 space_comment_li.htm
     array space_blog_comment_op
     string space_blog_comment_bottom
 space_doing.htm
     string space_doing_top
     string space_doing_bottom
 space_favorite.htm (X2.5)
     string space_favorite_nav_extra
 space_friend.htm
     string space_interaction_extra
 space_header.htm
     string global_usernav_extra1
     string global_usernav_extra2
 space_home.htm
     string space_home_side_top (X2.5)
     string space_home_side_bottom
     string space_home_top
     string space_home_navlink
     string space_home_bottom
 space_magic.htm (X2.5)
     string magic_nav_extra
 space_medal.htm (X2.5)
     string medal_nav_extra
 space_menu.htm
     string space_menu_extra
 space_profile_body.htm
     string space_profile_baseinfo_top
     string follow_profile_baseinfo_top (X2.5)
     string space_profile_baseinfo_middle
     string follow_profile_baseinfo_middle (X2.5)
     string space_profile_baseinfo_bottom
     string follow_profile_baseinfo_bottom (X2.5)
     string space_profile_extrainfo
     string follow_profile_extrainfo (X2.5)
 space_share_li.htm
     array space_share_comment_op
 space_status.htm
     string space_home_doing_sync_method
 space_wall.htm
     string space_wall_face_extra
  • 注册/登录(member/)
 login.htm
     string logging_side_top
     string logging_top
     string logging_input
     string logging_method
 login_simple.htm
     string global_login_extra
 register.htm
     string register_side_top
     string register_top
     string register_input
     string register_logging_method
     string register_bottom
  • 门户(portal/)
 portalcp_article.htm
     string portalcp_top
     string portalcp_extend
     string portalcp_middle
     string portalcp_bottom
 view.htm
     string view_article_top (X2.5)
     string view_article_subtitle (X2.5)
     string view_article_summary (X2.5)
     string view_article_content (X2.5)
     string view_share_method
     string view_article_op_extra (X2.5)
     string view_article_side_top (X2.5)
     string view_article_side_bottom (X2.5)
  • 排行榜(ranklist/)
 side_left.htm
     string ranklist_nav_extra
 album.htm
     string album_top
     string album_bottom
 blog.htm
     string blog_top
     string blog_bottom
 footer.htm
     string global_footer
     string global_footerlink
 forum.htm
     string forum_top
     string forum_bottom
 group.htm
     string group_top
     string group_bottom
 header.htm
     string global_usernav_extra1
     string global_usernav_extra2
 portal.htm
     string portal_top
     string portal_bottom
  • 应用(userapp/)
 userapp_app.htm
     string userapp_app_top
     string userapp_app_bottom
 userapp_index.htm
     string userapp_index_top
     string userapp_index_bottom
 userapp_menu_list.htm
     string userapp_menu_top
     string userapp_menu_middle
     string userapp_menu_bottom
  • 手机全局(mobile/common/)
 footer.htm
     string global_footer_mobile
 header.htm
     string global_header_mobile
  • 手机论坛(mobile/forum/)
 discuz.htm
     string index_top_mobile
     string index_middle_mobile
     string index_bottom_mobile
 forumdisplay.htm
     string forumdisplay_top_mobile
     array forumdisplay_thread_mobile
     string forumdisplay_bottom_mobile
 viewthread.htm
     string viewthread_top_mobile
     array viewthread_posttop_mobile
     array viewthread_postbottom_mobile
     string viewthread_bottom_mobile

更多相关:
1、Discuz! X2.5 程序目录结构注释说明
2、Discuz模板中插件嵌入点显示位置的注释图
3、Discuz x2.5 模板文件中的插件钩子(插件嵌入点)
4、Discuz! 插件开发实例讲解(抽奖插件)

返回顶部