首页/技术分享/emlog 全量挂载点详解手册

emlog 全量挂载点详解手册

时间:08-30技术分享8 次阅读

适用对象:emlog 插件开发者、模板开发者
数据来源:基于实际源码
最后更新:Pro 2.6.28

一、什么是挂载点

emlog 采用 钩子机制 实现插件与核心的解耦。核心思想很简单:

  • doAction('钩子名') —— 在源码/模板中"埋点",标记一个可被扩展的位置
  • addAction('钩子名', '回调函数') —— 插件在运行时"挂载"自己的函数到指定钩子

当程序执行到 doAction() 时,所有挂载到该钩子的插件函数会依次自动调用

// 核心/模板中埋点
doAction('index_head');

// 插件中挂载
addAction('index_head', 'my_plugin_header');
function my_plugin_header() {
    echo '<!-- 我的插件已加载 -->';
}

二、前台模板挂载点

位于前台(博客访问端)模板文件中,用于向访客页面注入内容。

挂载点典型位置说明常见用途
index_headheader.php<head>前台头部扩展加载 CSS / JS / meta 标签
index_footerfooter.php 底部前台底部扩展统计代码、底部 JS
index_loglist_toplog_list.php 列表顶部文章列表上方首页公告、置顶横幅
index_navi_ext导航栏 HTML 末尾导航栏追加插件入口链接、搜索框
log_relatedecho_log.php 正文下方相关文章区域相关文章、文章底部广告
ja_related日志详情页相关文章(旧版兼容)兼容旧插件
diff_side侧边栏区域侧边栏扩展自定义小工具
rss_displayRSS 输出RSS 内容扩展RSS 广告、版权声明
log_direct_link日志链接链接处理外链跳转、链接转换
search_log_list搜索结果页搜索列表扩展搜索增强、结果处理
sort_log_list分类列表页分类列表扩展分类描述、分类广告
page_not_found404 页面404 内容扩展自定义 404、死链记录

三、后台管理挂载点

位于 admin/ 目录,用于扩展后台功能。

挂载点所在文件说明常见用途
adm_headadmin/views/header.php后台所有页面头部后台 CSS / JS
adm_footer后台页脚后台底部后台统计、版本信息
adm_main_top后台首页顶部主页面顶部系统公告、待办提醒
adm_main_content后台主内容区主内容扩展仪表盘小部件
adm_menu后台侧边栏一级菜单(管理员)插件后台入口
adm_comment_display评论管理页评论列表扩展评论审核增强
adm_link_display链接管理页友链管理扩展链接审核、批量操作
adm_navi_display导航管理页导航管理扩展自定义导航类型
adm_sort_add分类添加页分类表单扩展分类自定义字段
adm_writelog_head写文章页头部写文章资源加载编辑器增强、写作辅助
adm_writelog_bar写文章工具栏编辑器工具栏自定义按钮、快捷插入
adm_writelog_side写文章侧边栏编辑页侧边SEO 面板、缩略图
adm_write_page_side写页面侧边栏页面编辑侧边页面模板选择

四、日志操作挂载点

在日志(文章)的创建、修改、删除生命周期中触发。

挂载点触发时机参数说明
save_log保存日志时$blogid, $pubPost, $logData推送、缓存清理、自动生成摘要
before_del_log删除日志$key(日志ID)删除前备份、拦截
del_log删除日志时$key(日志ID)清理关联数据、删除附件
approved_log审核通过审核通知
rejected_log审核拒绝拒绝处理
down_log日志被访问/下载阅读统计、下载计数
save_page保存页面时页面缓存更新
save_sort保存分类时分类缓存刷新

五、评论操作挂载点

挂载点触发时机说明
comment_post发表评论垃圾评论拦截、验证码校验
comment_saved评论保存邮件通知、评论计数
comment_reply回复评论时@提醒、回复通知
pub_comment评论公开时公开评论处理

六、用户相关挂载点

挂载点触发时机说明
login_head登录页头部自定义登录页样式
login_ext登录表单第三方登录按钮
login_succeed登录成功记录登录日志
login_fail登录失败安全拦截、失败计数
signup_ext注册表单额外注册字段
register_succeed注册成功欢迎邮件、初始化
delete_user删除用户清理用户数据
user_menu用户中心菜单个人中心导航
user_main_content用户中心主内容个人中心扩展
blogger_ext博主信息博主资料展示
send_email_code发送邮箱验证码邮箱验证

七、附件与媒体挂载点

挂载点说明
attach_upload附件上传时,可用于格式限制、自动压缩
del_media删除媒体时,清理缩略图等关联文件

八、互动与社交挂载点

挂载点说明
like_post点赞
dislike_post点踩
collect_post收藏发表
collect_saved收藏保存后
post_note发表笔记/微语

九、模板与系统挂载点

挂载点说明
tpl_options_get模板设置参数获取,用于模板选项面板

十、插件开发实战示例

示例 1:向前台头部注入 CSS

addAction('index_head', 'myplugin_front_css');
function myplugin_front_css() {
    $css_url = BLOG_URL . 'content/plugins/myplugin/style.css';
    echo '<link rel="stylesheet" href="' . $css_url . '">' . "\n";
}

示例 2:在导航栏添加入口

addAction('index_navi_ext', 'myplugin_navi_link');
function myplugin_navi_link() {
    echo '<li><a href="' . BLOG_URL . '?plugin=myplugin">我的插件</a></li>';
}

示例 3:日志保存后自动推送

addAction('save_log', 'myplugin_after_save');
function myplugin_after_save($blogid, $pubPost, $logData) {
    if ($pubPost) {
        $url = BLOG_URL . '?post=' . $blogid;
        // 推送逻辑...
    }
}

示例 4:后台菜单注册

addAction('adm_menu', 'myplugin_admin_menu');
function myplugin_admin_menu() {
    echo '<li><a href="./plugin.php?plugin=myplugin">我的插件</a></li>';
}

十一、开发规范与建议

  1. 函数名加前缀:避免与其他插件冲突,如 myplugin_ 前缀
  2. 优先使用官方挂载点:不要为了装插件而修改核心代码
  3. 模板保留核心钩子:至少保留 index_headindex_footerindex_loglist_toplog_relatedindex_navi_ext
  4. 验证钩子存在性:不确定时 grep doAction( 搜索源码确认
  5. 注意参数顺序:带参数的钩子,回调函数参数顺序必须与 doAction() 调用时一致
  6. 性能意识:挂载点上的函数应尽量轻量,避免阻塞页面渲染

附录:完整挂载点速查表

adm_comment_display      adm_footer            adm_head
adm_link_display         adm_main_content      adm_main_top
adm_menu                 adm_navi_display      adm_sort_add
adm_write_page_side      adm_writelog_bar      adm_writelog_head
adm_writelog_side        approved_log          attach_upload
before_del_log           blogger_ext           collect_post
collect_saved            comment_post          comment_reply
comment_saved            del_log               del_media
delete_user              diff_side             dislike_post
down_log                 download_resource     index_footer
index_head               index_loglist_top     index_navi_ext
ja_related               like_post             log_direct_link
log_related              login_ext             login_fail
login_head               login_succeed         page_not_found
post_comment             post_note             pub_comment
register_succeed         rejected_log          rss_display
save_log                 save_page             save_sort
search_log_list          send_email_code       signup_ext
sort_log_list            tpl_options_get       user_main_content
user_menu

📌 提示:不同 emlog 版本间挂载点可能存在差异,请以你当前部署版本的源码为准。更新清单命令:

THE END
分享文章
QQ好友 QQ空间 新浪微博 复制链接

相关文章

评论列表 (0)

还没有评论,告诉我们你的想法。

呵呵哈哈吐舌惊恐酷发飙嗯哼流汗大哭尴尬黑脸超赞金钱疑问尬脸吐哦豁委屈眯眼笑哟嚯超开心滑稽眨眼羡慕入眠惊哭气呼呼震惊喷水爱心心碎玫瑰礼物咖啡OK小无奈偷笑坏笑卧槽要死亚麻跌笑哭了犀利理一下坐端正完美吃瓜摊手困狗靠墙看发现饮酒忍笑警告炸黑滑稽汗打脸胖次低看
清空信息
点开播放器搜索歌曲,歌词将在这里横屏显示