欢迎来到 斗罗插件网

www.douno.top

《我的版块有三套房,而你的只有两室一厅》

一个关于 "分类焦虑" 的真实故事

你有没有过这种经历?论坛版块越开越多,导航栏从 "简洁优雅" 变成了 "春运火车站大屏"。

原版 Xiuno BBS 说:我支持二级分类!够你用了吧?

你说:够…… 吧。

然后三个月后,你的 "资源分享" 下面挂了 47 个子版块,其中 "软件资源" 下面又想分 "Windows""Mac""Linux"" 安卓 "……

二级分类?那叫平房。我要住复式。

于是这个插件诞生了

xn_forum_level_3 —— 不是简单地给你加一层分类,是给你的论坛装了一部电梯。

  • 三级版块:一级当爹,二级当儿子,三级当孙子,祖孙三代其乐融融
  • 前台导航下拉:鼠标往一级版块上一搁,二级分类齐刷刷从下面冒出来,有三级的还会往右边再弹一层,丝滑得像德芙
  • 后台可视化管理:拖拽?没有。但增删改查该有的都有,颜色还区分了层级(红的是大当家,黄的是二当家,绿的是…… 三当家)
  • PHP 8 兼容:在别人还在为 each() 被移除哭天抢地时,这个插件已经用上了类型声明和空安全运算符,优雅得不像实力派

关于删除子版块这件事,说多了都是泪

你以为加个三级分类就完了?

天真。

开发过程中最惨烈的战斗,不是写三级树结构,而是删除一个没有帖子的子版块

原生 Xiuno 说:删版块?先看看有没有帖子。哦,threads 字段是 0?那我再去 thread 表里确认一下…… 什么,你说真的没有?我不信,我弹个框 "请先通过批量主题管理删除该主题"。

插件作者:???

于是我们经历了:

  1. 第一次:hook 没触发,原生提示岿然不动
  2. 第二次:换了个 hook,500 Internal Server Error
  3. 第三次:try-catch 安排上,终于能删了 —— 但删完页面不刷新,版块还在那杵着,像在嘲笑你
  4. 第四次:哦,原来 app.forumlist 是索引数组不是关联数组,delete app.forumlist[fid] 删了个寂寞

最终方案:完全绕过原生删除接口,自己写 SQL 删,前端用 filter 实时更新视图。 简单粗暴,但管用。

现在删除子版块的体验是:点一下 → 确认 → 唰,没了。干净利落,像拔掉了一根早就该拔的智齿。

下拉菜单的宽度,是一种哲学

你以为下拉菜单做出来就完了?

用户说:太宽了。

改。

用户说:跟上面不对齐。

改。

用户说:还是不好看。

改。

最终方案:JS 动态获取导航项的 getBoundingClientRect().width,下拉菜单宽度精确到像素级对齐。 强迫症福音,处女座狂喜。

而且二三级版块在导航栏里会被自动隐藏,不再像牛皮癣一样贴在后面。你的导航栏终于恢复了它本该有的尊严。

技术细节(给想看的人)

  • 数据库:forum 表加一个 fup int unsigned 字段,记录父版块 ID
  • 前台:纯原生 JS,固定定位全局下拉,双 hook 兜底(body_end + footer_end),防重复执行标记
  • 后台:覆盖 forum_list.htm 模版,Vue.js 三级树渲染
  • 删除:自定义 POST 参数 action=xn_delete_forum 触发,try-catch 包裹,直接 SQL 级联删除
  • 兼容:PHP 8.0+,MySQL 5.7/8.0+,Xiuno BBS 4.0/5.0

最后

如果你也在被二级分类的天花板压得喘不过气,如果你的导航栏已经长到需要横向滚动,如果你的 "资源分享" 下面已经塞不下更多子版块 ——

试试这个插件。

三级分类,不是终点,是你终于可以不用再把 "Windows 软件" 和 "Mac 软件" 塞在同一个叫 "软件" 的版块里的开始。

毕竟,谁不想住复式呢?



插件版本 2.2,兼容 PHP 8+,后台禁用再启用即可生效。有问题别找作者,作者已经被删除功能折磨瘦了三斤。

上传的附件
  • 版块三级分类2.2.zip
    2 金币
0 0 0 举报
复制成功