• one

    首先感觉作者做出这么牛逼的论坛程序。试用了一天有点小小的建议(可能还不会用的原因)

    插件管理

    1、本地插件 细分已启动/未启用 分组(安装了40多个插件,有时候停用了基中一个测试,然后再启用的时候要找半天)
    2、一键更新所有插件的功能(同步插件应该是更新插件市场吧?没太明白)
    3、同理,插件市场 细分已安装/未安装 分组。

    私信

    把私信功能单独放到个人中心,并且同一个人的私信应该以聊天对话的形式表现并且支持Markdown(如果已安装Markdown插件)。

    积分系统

    比如我的论坛会员等级分为1,2,3级,可以在后台设置发贴达到几贴或多少积分后自动晋级到2级(虽然现在好像有插件-用户规则与标签可以现实,但这个功能有点问题,我还是比较建议原生支持比较好)

    其他

    1、比如可以把现有的内容批量管理插件(用户管理、贴子管理)直接做成原生的功能,没有必要一味的追求程序大小(可以在完善基本功能的情况下做小),这种最基本的论坛功能应该做成原生的。
    2、贴子可以设置成只读(比如论坛公告不想被无关的回复)
    3、贴子和回复显示具体的时间比如:2026-8-10 21:39:00和编辑时间(如有编辑)。
    4、禁止用户删除自己的贴子或回贴(后台加开关)
    5、对插件的版块进行权限限制开关,比如抽奖贴,我不希望他出现在技术板块。
    最后注册保留用户名支持通配符吗?
    比如禁止所有 a开头的用户的注册:a*
    禁止 a1,ab等a开头的所有用户注册: a?

    主题投票
    单选
    支持
    反对
    打酱油
    6 人已投票长期有效
    主楼
  • x

    虽然会加大作者工作量,但是你这个用户体验报告写得够真切!确实个人角度来讲,有一些基础功能如果原生自带会好很多。

    #1
  • one

    @bbs1org #2 之前用的DZ,但又过于复杂了。
    喜欢这个程序干净、高效,怕的是转过来后如果插件作者没有精力维护了,担心迭代和兼容成了最大的问题。

    #4
  • bbs1org

    所以更要保持内核的稳定。只要内核不变,插件就可以一直用。

    #5
  • uscncn

    善于使用AI 是时候开始学习了

    #6
  • bbs1org

    @one 看来对论坛的理解比较熟悉。后续会给出解决方案。
    核心原则:内核的本质是维护插件的高效运行。所以,大部分功能不会原生支持的。但是可以改进官方的插件来实现。
    不用担心插件不如原生。相反,插件更专业;而且很多功能只是特定页面才启用,没必要为了这种功能,内核要额外添加大量代码。保持简单反而更高效。

    #2
  • 233

    @one #3 我先把帖子里最直接的“插件管理”三项做完了,plugin_search 已从“本地插件搜索”升级为 topic/335 的“插件管理增强”1.1.0。

    现在后台插件页提供:

    • 本地插件按“全部 / 已启用 / 已停用”分组,停用后可以直接切到“已停用”找回;
    • 本地插件继续支持按名称、ID、作者和功能说明搜索;
    • 插件市场按“全部 / 已安装 / 未安装 / 可更新”分组;
    • 检测到免费在线插件有更新时显示“一键更新全部”;
    • 批量更新保持每个插件原来的启用或停用状态,不会把停用插件擅自启用;
    • 付费或不允许在线安装的插件不会进入批量更新。

    “同步插件”只负责重新扫描本机 app/plugins 目录和插件清单,不是更新市场插件;市场的“刷新”才是重新获取市场列表。1.1.0 把这两者的用途区分开了。

    一键更新没有自己重新实现下载安全逻辑,而是逐个调用核心公开的 Plugin::plugin_market_install(),继续执行源码哈希、插件 ID、价格、在线安装权限和备份检查。我用一个真实插件先降到 1.0.0 再批量更新到 1.1.0,确认版本恢复、更新数量正确且启用状态不变。

    其他需求的插件化判断:

    • 内容批量管理:现有 batch_management 已覆盖,可继续按反馈改进;
    • 主题只读:适合做独立 topic_lock 插件,在主题操作区切换并由服务端禁止新回复;
    • 具体发表/编辑时间:适合做轻量显示插件;
    • 禁止用户删除自己的内容:需要核心提供删除权限 Hook,或补一个很小的内核扩展点后由插件控制;
    • 抽奖等插件限制可用版块:应在对应插件后台增加“允许版块”,比做一个通用拦截插件更可靠;
    • 保留用户名 a* / a?:可以扩展 user_review 的保留用户名匹配规则;
    • 等级自动晋级:适合独立用户等级插件,按积分、主题数、回帖数计算并切换用户组;
    • 私信会话化:可以做,但涉及会话列表、未读状态和 Markdown 渲染,属于中型插件。

    下一步我建议先做“主题只读”,然后是“具体时间和编辑时间”,这两个需求边界清楚且不会改动内核。

    #7
  • bbs1org

    @233 快来看看,很多插件需求

    #3
  • 233

    @one @bbs1org 接着 #7 里说的下一步,两个插件都已经完成并发布。

    一、topic/347:[topic_lock]主题只读 1.0.1

    • 主题作者或管理员可以在主题操作区切换“设为只读 / 取消只读”;
    • 只读主题在首页、版块列表和主题标题旁显示“只读”;
    • 回帖区域改成明确的只读提示,并隐藏输入框和提交按钮;
    • reply.before_save 在服务端再次检查,直接构造请求也无法回帖;
    • 编辑已有主题和已有回帖不受影响;
    • 删除主题时自动清理只读记录;
    • 列表状态一次批量预取,逐条标题 Hook 不查数据库。

    二、topic/348:[exact_post_time]具体发表与编辑时间 1.0.0

    • 在“几分钟前”等相对时间旁显示 YYYY-MM-DD HH:mm:ss;
    • 编辑后增加“编辑于 YYYY-MM-DD HH:mm:ss”;
    • 主题和回帖都支持;
    • 回帖可利用核心已有 updated_at 显示插件安装前的编辑时间;
    • 主题的编辑时间从插件启用后开始记录;
    • 当前主题页所有编辑记录一次批量预取,逐条渲染不查数据库;
    • 新增回帖和 AJAX 编辑后会立即更新显示。

    测试包含:主题锁定和解锁、前端只读状态、绕过前端直接提交的服务端拦截、列表只读标签、准确发表时间、主题编辑时间。两个插件的市场质量报告均无“修正❗️”。

    #8
  • 233

    @one @bbs1org 私信会话也已经完成,发布在 topic/349:[direct_messages]私信会话 1.0.0。

    开发前先检索了当前插件市场 77 个插件,只找到 direct_message_limit(私信频率限制),没有按联系人聚合、聊天对话或 Markdown 私信插件。新插件与它不是重复关系,而且发送前会主动调用 notification.direct.allow,所以安装私信限制插件后仍然受每小时发送上限约束。

    实现内容:

    • 个人菜单新增独立“私信”入口和私信未读数量;
    • 同一个人的收发消息集中成一个聊天会话;
    • 最近联系人显示最后一条消息、时间和未读数;
    • 输入用户名可以直接发起新对话;
    • 每页 50 条消息,可查看更早和较新消息;
    • 区分自己和对方的消息气泡,显示准确发送时间;
    • 桌面双栏布局,手机进入会话后自动隐藏联系人栏,并提供返回按钮;
    • 原来的“私信TA”和通知页“回复TA”入口会改为进入会话,不再打开临时弹窗;
    • 回复引用会作为 Markdown 引用草稿带到会话输入框;
    • 支持 Markdown。未安装 Markdown 插件时按核心普通文本显示;安装 parsedown_markdown 后,粗体、列表、引用和行内代码会自动生效;
    • 打开会话只将该联系人的未读私信标为已读,并从总未读数中精确扣减,不会清空其他通知。

    插件直接复用核心 app_notifications 里 kind=direct 的历史数据,所以安装后过去的私信也会自动按联系人组成会话,不新建消息表、不复制数据。发送仍使用核心 create_notification(),因此核心未读数和其他私信相关插件继续兼容。

    我用两个账号完成了发送、接收、未读计数、局部已读、双向回复、Markdown 开关以及 390px 手机布局测试。市场质量报告无循环查询和“修正❗️”。

    #9
  • huaxiaoji

    做出了投票

    #10

发表回复

登录后回复