当时看到这个觉得很有梗啊,在看到社区没有开勋章功能,市面上也没有一个类似于成就树的扩展,萌生了一个自己开发一个成就树的想法。
当时受限于ai编程水平,第一步安装flarum都安装不起来,后续就慢慢淡忘这个想法了

最近遇到一个新ai,注册送的积分也多,模型也有限免的,就又想起来这个想法,重新开始开发拷打AI。
经过三天的开发,终于完成了第一个版本,目前可能有些小问题,但是功能基本上能打到我自己的要求了,但是苦于我没有任何的编程基础,所以我也没有代码审计,在此鸣谢站长帮我瞄了一眼仓库指出了几个致命性问题,目前已修复
接下来看看大概张啥样吧
观前提醒:一下内容由AI生成,我按照生成内容放上截图和简要修改
给咱们的论坛种一棵「成就树」——Flarum 成就树插件推荐
写在前面
HAM 圈有句老话:「通联是两个人之间的事,但快乐是一群人的事。」
咱们这个圈子玩的东西特别「有成绩感」——第一次开台、拿到操作证书、学会 CW、通上第一张 DX、集齐 QSL 卡、玩转 FT8、架起自己的天线……这些事,谁不想到处炫耀一下?
可论坛里这些东西,往往就埋在一个个帖子里,翻都翻不到。前几天闲逛 GitHub,翻到一个挺对味儿的插件:Achievement Tree(成就树),作者是 thefish12357。装上试了几天,感觉挺适合咱们这种「成就满天飞」的社区,写篇小文推荐给大家。
一、这插件到底能干啥?
一句话概括:它给每一位会员发一块「荣誉墙」,而且这块墙长在树上。
1. 成就树 + 徽章、后台展示

- 还能看到「已获得 N 个成就」的统计,以及展开/收起的折叠浏览。

- 后台集成成就配置和审核。

2. 系列 + 层级:把「成长路线」画出来
这是我觉得最巧妙的地方:
- 系列:同类成就归为一系列。
- 层级:数字越大越高级,0 为最低层。
- 关键机制:同一个系列,在帖子只展示用户已获得的最高层级徽章,低层的自动隐藏。
也就是说,新人不会满身挂满新手徽章显得杂乱,老玩家一枚「顶级徽章」就够分量了——很像军衔,很干净。
3. 三种解锁方式,运营起来很灵活
| 方式 | 适用场景 |
| 手动授予 / 撤销 | 管理员按用户 ID 直接发放,适合线下发的奖、口头认可的荣誉 |
| 自动解锁(规则) | 满足规则(目前支持基于角色等条件)系统自动授予,比如「注册满一年」「获得某用户组」 |
| 用户申请 + 管理员审核 | 会员自己上传证明材料申请,管理员通过或驳回 |
后台的审核台做得挺全:能按状态(全部 / 待审核 / 已通过 / 已驳回)、用户、成就、说明筛选,驳回时强制填写理由,避免「被拒了但不知道为什么」的尴尬。
4. 通知到位,仪式感拉满
审核通过、被驳回(带理由)、成就自动解锁,都会给用户发通知:
「你的成就『XXX』申请已通过」
「你解锁了成就『XXX』」
社区里最爽的事,不就是手机一震,看到自己又解锁了一个新头衔嘛。
5. 证明材料上传,还挺照顾隐私
申请成就时需要上传证明图片,插件在界面上直接提示:
请自行对上传的图片打马赛克或遮挡敏感信息后再上传。
这点对咱们太重要了——操作证书、执照、地址这些千万别裸奔上传。作者能想到这一层,说明是真在社区里待过的。
6. 图片上传 & 存储比较讲究
- 徽章图与证明图分开配置存储子目录(
storage/achievement-tree/ 下,子目录名只允许字母、数字、中划线和下划线)。
- 图片不落在
public 目录里直接暴露,而是通过 /achievement-images/{id} 路由转发访问——相对更稳妥一些。
- 上传徽章时自带正方形裁剪框(拖方框 + 右下角圆点缩放,始终锁正方形),不用再另外开 PS 切图了。
二、为什么说它特别适合业余无线电社区?
因为这个圈子的「成就」天然就多,而且天然适合分级:
- 入门系:完成注册、首次发帖、上传呼号、完成首次通联
- 操作等级系:A / B / C 类操作证书,呼应真实的等级晋升
- 通联里程系:通联 100 / 1000 / 10000 次,DXCC 100 / 200 / 300
- 模式挑战系:CW 首通、FT8 首通、卫星通联、EME、QRP 通联
- 工程系:自制天线、DIY 巴伦、架设塔杆、修复老设备
- 竞赛系:CQWW、CQ WPX、Field Day 参赛 / 获奖
- 社区贡献系:参与中继维护、组织活动、撰写技术帖、解答新人问题
- 【但是这些都需要运营方自行配置】
把这些变成一棵看得见的成就树,新人有目标,老玩家有排面,潜水党有动力冒泡——社区活跃度自然就起来了。
而且「申请 + 审核 + 证明材料」这套流程,恰好适配无线电圈子的特点:很多荣誉确实需要人工核实(证书、执照、卡片的真实性),纯自动规则反而不够用。这插件的设计思路和咱们的玩法是契合的。
三、安装和配置,比想象中简单
前提:你的 Flarum 是 1.8 及以上,PHP 8.0 及以上。
cd /path/to/your/flarum
composer require thefish12357/flarum-achievement-tree
php flarum migrate
php flarum cache:clear
然后去 后台 → 扩展,启用「Achievement Tree」就行。
启用后:
- 进扩展设置,确认徽章图子目录和证明图子目录(默认可用,部署后按需调整)。
- 进成就管理,新建成就:填名称、描述、图标、图片、系列、层级,还可以设置「上级成就」和「隐藏成就」。
- 选择解锁方式:手动 / 自动(规则)/ 申请审核。
- 想造「隐藏成就」(成就曝光前不可见)也支持,适合搞彩蛋活动——比如「某天通联满 100 个 J 台」这种神秘挑战。
整个流程基本是点几下鼠标的事,不需要改代码。
小提醒:migrate 会改数据库结构,动手前先备份数据库,稳妥一点总没错。
四、兼容性与现状(说句实话)
- 依赖要求:
php >= 8.0,flarum/core ^1.8,也就是 Flarum 1.8 到 1.x 最新版都能用。
- 不支持:Flarum 1.7 及更早、以及将来的 Flarum 2.x(作者尚未放宽版本约束)。
- 协议:MIT,改代码、做二次开发、自己汉化都没问题。
- 语言:自带简体中文语言包,界面文案基本全中文,对国内社区友好。
- 现状:仓库比较新,Star 还不多,属于「潜力股」。功能主体已经比较完整(成就管理、树状展示、审核、通知、自动规则都有了)。如果你装了之后有想法或遇到问题,建议直接去仓库提 Issue,作者应该会看。
五、我的一点使用体会
说实话,我一开始是抱着「试试看」的心态装的,主要是想给自己折腾这么久的论坛找点新玩法。
装了之后最明显的感受是:发帖的动机变了。
以前发个通联报告,就是发个帖。现在发完会顺手看一眼自己还差哪几个成就,顺便想着「下次试试 20 米段,把那个波段成就补上」。这种微妙的牵引力,是单纯的「积分」或者「点赞」给不了的——因为成就树是有方向的,它告诉你「下一步该往哪走」。
另外个人主页那棵树,视觉上真的挺唬人(褒义)。有群友点进来第一句就是「你这级别怎么这么高」——这种互动,不就是社区最想要的东西吗。
当然也不吹过头:这插件目前不是一键傻瓜式,成就的内容体系得你自己设计,想做好一棵树还是要花点心思的。但「设计成就」这件事本身,我觉得就挺好玩的——相当于在给社区写一份荣誉规则。
六、写在最后
如果你正好在维护一个 Flarum 论坛,或者单纯想给自己常待的社区做点贡献,我挺建议试试这个插件的。免费、开源、中文友好,装起来不折腾。
咱们 HAM 这个圈子,本来就是一个靠分享和认可维系的地方。一个 73、一张卡片、一句「抄收了」,本质都是在说:我听到你了,你很棒。
成就树插件,只不过是把这句话,变成了一棵可以慢慢长大的树。
本插件使用ai生成。安装前请务必备份数据,并在测试环境先行验证。
求会审计的大佬审计一下我代码
最后再次鸣谢 站长UWQ 同志对本项目的大力支持