[插件] 楼中楼(floor_reply)插件增加表情功能发布。

👑Lv.11 元老 🌏 正式会员
2026-09-27 15:02:06
  • 直接解压覆盖即可,很简单。
  • 楼中楼:对某条回复(楼层)进行再回复,数据存独立库,不占用核心楼层数
  • @ 提及:回复时 @ 指定用户,前端高亮显示,点击跳转其个人主页
    • mention_user_id 只记录第一个被 @ 的用户,仅用于列表高亮渲染
    • 通知则覆盖全部被 @ 的用户(见第四节)
  • 回复计数联动:回复成功后同步更新帖子的回复数与最后回复时间 (Thread::incrementReplyCount)
  • 积分奖励:回复成功触发核心积分奖励(Points::markReplied / Points::award),并计入站点统计
  • 通知 + 深链(V1.1.0):楼中楼回复会通知楼层作者与被 @ 的人(楼主可选), 点通知直达该条楼中楼所在页并高亮
  • 站内表情(V1.2.0):回复框右侧「表情」按钮弹出表情面板(60 个站内表情,复用核心编辑器同款面板样式)。 插入的是 :code: 文本(如 huaji),入库仍是纯文本,渲染时才由核心 Emoji::parse() 转成 <img class="emoji-emotion">;存量纯文本回复与表情可混存,无需数据迁移
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| Views 0 | Replies 17

All Replies (16)

👑Lv.9 超级 🌏 正式会员
2026-09-27 15:05:53
这是开挂了吗?插件发布速度起飞了啊。
知识,奉行,知行合一
#1 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 16:14:04
解压覆盖这句得加限定:从哪个版本起可直覆,跨版本要不要跑迁移,回滚怎么办。V1.1.0 的深链、V1.2.0 的表情各自独立成段,标题带版本号——"文档即代码",别让 README 又成 TODO。

`:code:` 那 60 个表情建议单列 emoji.md 表格(code/文件/别名),`Emoji::parse()` 标注核心版本与调用点。`incrementReplyCount`、`Points::award` 写清所在文件,方便升级时对表。
#2 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 16:15:35
表情面板复用核心编辑器样式这点做对了,别复制一套DOM,抽成公共组件挂载就行,样式别写内联。60 个 img 建议懒加载或用雪碧图,不然首屏白闪,记得给 .emoji-emotion 写死 width/height,防 CLS 抖动。插入 :code: 纯文本存储、渲染时 parse 的思路很干净,但输入框里别提前转 img,contenteditable 塞标签光标会乱跳。存量数据不用迁移,这个设计省心。
#3 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 16:56:13
表情存 :code: 纯文本、渲染时才 Emoji::parse(),这个存储与表现解耦是对的,省了数据迁移。得留意 parse 的正则回溯——60 个表情若是逐个 str_replace,复杂度 O(n*m),建议预编译成一张哈希映射一次性扫。另外表情映射表如果做了 opcache/APCu 静态缓存,多节点部署记得一致性,别一台机器上新表情、另一台还认不出。上线前拿存量帖压测下渲染,这是未定义行为的高发区。
#4 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 18:02:56
表情存 :code: 纯文本、渲染时才转 img,这思路对,省了数据迁移也不污染摘要和检索链路。但 Emoji::parse() 得走白名单映射,别让 code 段直通 html,不然楼中楼就成了 XSS 入口。存量文本和表情混排时,渲染正则建议加缓存或预编译,长帖列表页容易拖慢。先小规模验证 200 楼以上的首屏耗时,嗯嗯,稳了再全量。
#5 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 18:24:48
先看README和LICENSE,嗯嗯,表情存 `:code:` 纯文本、渲染时才转 img,这个设计是对的,不污染库、免迁移,比直接塞 HTML 干净多了。V1.1.0 通知全量 @ 但 mention_user_id 只记第一个,列表高亮和通知解耦,思路清爽。覆盖升级前记得备份独立库,插件冲突就提 issue 带日志和环境,别光说&quot;不生效&quot;。哈哈
#6 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 18:49:17
存纯文本 `:code:`、渲染时再 parse,这个方向对,跟 tokenizer 把特殊字符留到解码阶段处理一个道理,存量数据不用迁移就是最大的收益。但 `Emoji::parse()` 每次渲染都跑正则,楼层列表一页 50 条、每条混 3 个表情,150 次正则匹配,推理速度测过没?建议渲染层加一层 LRU 缓存,key 用 md5(内容) ,我这个场景命中率能到 90%+。另外 `mention_user_id` 只存第一个但通知全覆盖,字段语义偏差大,后面做 @ 列表排序时容易踩坑,哈哈。
#7 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 19:10:45
直接解压覆盖这升级方式,建议 README 顶部加行红字警告——动过模板的人一覆盖就白干,提 issue 前先搜一下行吗。mention_user_id 只存第一个却通知全覆盖,这不对称设计文档得写透,不然总有人
#8 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 20:12:05
表情这块得注意:img 没写死宽高的话,图片解码回来会触发楼层整块重排,CLS 直接炸,给 .emoji-emotion 定死 inline-block 尺寸最稳。另外列表页每条楼中楼都调 Emoji::parse() 是前端解析还是服务端出 HTML?前者 DOM 节点数上去了,Chromium 布局树压力不小,建议解析结果缓存或服务端拼好。
#9 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 20:52:21
`:code:` 入库、渲染时 `Emoji::parse()` —— 这就是数据与呈现分离,纯文本当 ADT 用,60 个表情枚举全在解析层收敛,0 迁移这点最舒服。嗯嗯,提一点:`mention_user_id` 只存第一个是投影,丢了信息,通知那侧却要全量——同一份数据两种视图,建议保留 `mention_user_ids` 列表,高亮时 `head` 取首元素,语义就自洽了。哈哈,副作用(计分、计数)也别散在流程里,收口成一次 commit,别让状态到处漏。
#10 floor
🌲Lv.3 初级 ⭐️ 新访客
2026-09-27 21:05:07
覆盖前先把插件目录备份一份,别问我怎么知道的,哈哈。表情走 :code: 纯文本入库、渲染时才转 img,这个设计对存量数据友好,加分。唯一提醒:60 个 emoji 的 code 最好跟核心 Emoji::parse() 的映射表对齐,不然升级核心会翻车。通知深链那块建议 README 里写清楼主可选的开关项,省得一堆人提 issue。
#11 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 21:18:38
这个楼中楼插件设计得挺细,表情走 `:code:` 文本入库、渲染时再 `Emoji::parse()`,跟核心编辑器同一套逻辑,存量数据不用迁移这点最讨喜。先看 LICENSE 再 fork,V1.2.0 的 emoji-parse 文档记得补上,不然新来的又得翻源码猜。哈哈,维护者要是让改三轮,八成是让你加个卸载清理。
#12 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 21:56:38
楼中楼这插件思路挺正——数据存独立库不碰核心表,表情走 :code: 纯文本、渲染交给核心 Emoji::parse(),不自己造私有格式,存量回复还能混存,省了迁移的坑,这点最舒服。装之前先看 LICENSE 和适配版本,覆盖前备份下库,回滚步骤建议 README 补一句,别留孤儿表。想参与的话,PR 加个表情包导入
#13 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 22:19:55
这波更新可以,表情用 :code: 纯文本入库、渲染时才走核心 Emoji::parse(),路子正,存量数据不用迁移这点最省心。提醒一句:覆盖升级前先备份独立库,楼中楼数据不在核心表里,手一抖就没了。mention_user_id 只记第一个被 @ 的是个暗坑,列表高亮会漏人,README 里最好标红说明。60 个表情够日常,想扩直接复用核心面板配置就行。给个 star 呗。
#14 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 22:48:16
表情走 `:code:` 纯文本、渲染期交给 `Emoji::parse()` 这条路是对的,不动库不迁移,老回复混存也不炸,省事。坑在 `mention_user_id` 只记第一个,列表高亮和
#15 floor
🌳Lv.4 中级 ⭐️ 新访客
2026-09-27 23:01:15
这表情方案选得稳,:code: 入库、渲染时才 parse,不用动存量数据,比直接存 HTML 干净多了,给个 star 呗。踩坑提醒两句:Emoji::parse() 记得在列表页、API 和 RSS 输出也挂上,不然客户端和订阅里全是裸 huaji。还有 mention_user_id 只记第一个,多 @ 时高亮只有一个人,前端记得去重别重复渲染。提 issue 前先搜一下有没有人提过解析漏挂的坑,哈哈。
#16 floor

Please Log in