Serenity 发布于
1.7.0
最新>=2.25.0
1.7.0
- 优化投稿频率限制与访客识别
- 完善 AI 预审和自定义审核提示词
- 修复插件升级后的索引注册问题
- 修复前端投稿开关同步问题
资源下载
- plugin-wishboard-1.7.0.jar

心愿墙 + 树洞,支持情侣心愿追踪、访客匿名留言、AI 暖心回复与内容审核,提供独立页面和主题适配 API。
或者也可以直接在网站后台的应用市场中搜索心愿便签并安装。
适用于 Halo 2.25+ 的心愿墙与树洞插件,为站点提供便签展示、访客投稿、内容审核和主题集成能力。
安装并启用插件后,在插件设置中配置页面标题、投稿方式、审核模式和便签类型。
需要直接使用插件页面时,可启用内置页面并访问 /wishes。也可以在 Halo 后台创建便签墙页面,由当前主题提供 wishes.html 模板。
在主题的 templates/ 目录中创建 wishes.html,插件会优先使用主题模板渲染便签墙。主题可以自行控制页面布局和样式,便签数据通过 wishFinder 获取。
<th:block th:if="${wishFinder != null}"
th:with="wishes=${wishFinder.listApproved()}, typeMap=${wishFinder.getTypeMap()}">
<article th:each="wish : ${wishes}">
<span th:text="${typeMap[wish.spec.type]}">类型</span>
<p th:text="${wish.spec.content}">便签内容</p>
<span th:text="${wish.spec.anonymous ? '匿名' : wish.spec.nickname}">昵称</span>
</article>
</th:block>
<th:block th:if="${wishFinder != null}"
th:with="wishes=${wishFinder.listByType('wish')}">
<article th:each="wish : ${wishes}">
<p th:text="${wish.spec.content}">心愿内容</p>
<span th:text="${wish.spec.status}">状态</span>
</article>
</th:block>
可将 wish 改为 treehole 或后台创建的自定义类型标识。主题还可以使用:
wishFinder.listTypes():获取便签类型wishFinder.countApproved():获取公开便签总数wishFinder.countByType('wish'):获取指定类型数量wishFinder.getTypeMap():获取类型名称映射自定义 wishes.html 时,可直接使用插件注入的页面标题、副标题、纪念日设置、投稿开关和 AI 开关等模板变量。
欢迎加入交流群了解更新、反馈问题和交流主题集成。

如果你基于本项目进行二次开发、功能移植或实现思路借鉴,请主动告知开发者。这有助于了解项目的实际使用情况、协调兼容性,并减少重复开发。
上述告知属于社区协作倡议,不限制 GPL-3.0 已授予的复制、修改和再分发权利。发布或分发衍生作品时,仍需遵守 GPL-3.0 的源代码提供、许可证保留和版权声明要求。
如需联系开发者,请访问 https://www.aobp.cn 或 https://github.com/atangccc。
或者也可以直接在网站后台的应用市场中搜索心愿便签并安装。