• 233
    淘帖专辑
    ID topic_collections版本 1.4.4插件制作者 233免费879 行 / 61.7 KBHook / 路由 / 后台页
    创建、订阅和协作维护公开或私密淘帖专辑,让优质文章更容易被发现。
    app/plugins/topic_collections/plugin.php
    开发日志最新 10 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.4.4 4d6ebcf97ad8 更新:优化细节release
    • bbs1org
      bbs1org
      版本 1.4.3 5eb07e04d97f 更新:优化细节
    • bbs1org
      bbs1org
      版本 1.4.2 bcb1bc20b255 更新:优化布局
    • bbs1org
      bbs1org
      版本 1.3.0 e394df19c9b7 更新:优化布局
    • bbs1org
      bbs1org
      版本 1.1.2 7d15b3b714ed 更新:优化位置
    • bbs1org
      bbs1org
      版本 1.0.33 094ecd1dfca1 更新:更新版本号
    • bbs1org
      bbs1org
      版本 1.0.32 6f1123581436 更新:支持v10
    • bbs1org
      bbs1org
      版本 1.0.31 e0e16f538f9b 更新:批量预载优化
    • bbs1org
      bbs1org
      版本 1.0.27 df53e957e343 更新:主题详情页 topic_collections_after_view() 不再查询当前用户的可管理专辑
    • bbs1org
      bbs1org
      版本 1.0.26 9e5ce3e854f0 更新:修正通知格式或者积分变动不进积分规则的问题
    主楼
  • 质量报告

    插件质量报告

    插件:topic_collections

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    sidebar.stack全站侧栏组件栈否5---写 plugin_topic_collections_subscriptions;读 plugin_topic_collections_collections, plugin_topic_collections_items
    top.menu_links顶部版块导航/移动端版块列表,同一请求只执行一次(展示位置:顶部菜单)否5----
    topic.after_render首页/版块列表/主题查看逐条渲染是(列表跳过)5----
    topic.title_suffix首页/版块主题列表逐条标题是5----
    topic.after_view主题查看页完成加载否4---读 plugin_topic_collections_items, plugin_topic_collections_collaborators
    user.menu_links个人卡片/移动端我的菜单(展示位置:个人卡片)否4----
    topic.actions主题查看页操作区(展示位置:主题操作)否3----
    content.before_delete内容删除操作否2---写 plugin_topic_collections_items, plugin_topic_collections_collections

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    plugin_topic_collections_collections

    字段类型可空默认值约束
    idid否-主键、自增
    user_iduint否-唯一
    namestring否-唯一
    descriptiontext是--
    visibilitykey否'public'-
    item_countuint否0-
    created_atuint否--
    updated_atuint否--

    plugin_topic_collections_items

    字段类型可空默认值约束
    idid否-主键、自增
    collection_iduint否-唯一
    topic_iduint否-唯一
    user_iduint否--
    created_atuint否--

    plugin_topic_collections_subscriptions

    字段类型可空默认值约束
    collection_iduint否-主键
    user_iduint否-主键
    created_atuint否--

    plugin_topic_collections_collaborators

    字段类型可空默认值约束
    collection_iduint否-主键
    user_iduint否-主键
    added_byuint否--
    created_atuint否--
    #1
  • bbs1org

    版本 1.0.13 更新:
    本次改造的功能升级日志(淘帖专辑 插件,版本 1.0.12 → 1.0.13):

    🔧 稳定性与安全性

    • 修复 CSS 冲突事故:插件 CSS @media 块缺少闭合 },导致其后的所有插件样式(含头像)被吞进媒体查询;补齐括号并重建主题资源
    • 系统性排查:全量核对循环查询(无 N+1)与索引设计(与 EXPLAIN 实测一致,无需改动)

    🎯 管理页重构

    • 独立管理页路由:topic_collection_manage 新增独立页面,取代专辑页内 details 折叠式管理;含基本设置 / 移除文章 / 协作者增删 / 删除专辑
    • 分区块卡片布局:设置、移除文章、协作者、删除各自独立卡片;表单改单列;移除按钮改无背景纯文字;删除按钮颜色优化(红字+淡红底,hover 红底白字)
    • 列表细节:移除按钮右对齐、列表自适应宽度、移动端自动换行
    • 入口调整:淘帖列表卡片去掉"管理"按钮,保留专辑详情页的管理入口

    📱 前端交互升级

    • 主题面板标题"淘帖专辑" 变为链接(指向大家的淘帖)
    • 收录表单旁新增 "我的淘帖 →" 入口,与"收录到专辑"标签并列
    • 面包屑:首页 / 我的淘帖(可点击)/ 专辑名
    • 响应式:推荐专辑 PC 3 列、移动端 1 列;面板与管理区适配窄屏

    ⭐ 收录体验

    • 已收录专辑可再次选择:选中时按钮切换为红色"移出专辑",直接退订
    • 新增"全部取消收录":一次从所有自己可管理的专辑中移除,并提示移除数量
    • 服务端配合:item_remove 支持从主题页触发(自动跳回主题完成)

    🧹 其他

    • 移除旧版迁移:删除 plugin_topic_curation_* 旧表兼容迁移代码,安装只建新表+索引(不考虑老用户升级)
    • 插件后台改为单列布局:设置字段单列显示
    • 版本升到 1.0.13
    #2
  • bbs1org

    版本 1.0.13 更新:
    优化UI

    #3
  • bbs1org

    版本 1.0.14 更新:
    增加通知

    #4
  • 秦始黄

    居然有这个插件 我都打算自己写一个了

    #5
  • bbs1org

    版本 1.0.14 更新:
    优化前台UI

    #6
  • bbs1org

    版本 1.0.14 更新:
    优化UI

    #7
  • bbs1org

    版本 1.0.19 更新:
    一、通知机制改造(懒统计)

    • 移除“订阅者实时群发通知”的万行写放大,加入 subscriptions.seen_at 已读水位
    • 新收录只写 1 行 item;登录用户在首页专属卡片看到「专辑名 + 未读徽章 N」
    • 进专辑详情页后水位自动推进,未读清零

    二、首页卡片(2 轮迭代)

    1. 第一版走 sidebar.feature_quick 快捷链接 → 独立 sidebar.stack 卡片「淘帖专辑更新」:每行 专辑名(左) + N 徽章(右),行间分隔、移动可用
    2. 点击进入专辑后,本次 N 条新收录主题每行标题右侧带「新」徽标(topic.title_suffix 钩子,与卡片同源判定:created_at > 旧 seen_at)

    三、性能优化(3 处 + 回暖)

    ┌──────────┬────────────────────────────────────────────────────────────────────────────────────┐
    │ 点 │ 措施 │
    ├──────────┼────────────────────────────────────────────────────────────────────────────────────┤
    │ 聚合查询 │ 新增 c.updated_at > s.seen_at 闸门先行过滤无更新专辑;再加同页缓存 │
    ├──────────┼────────────────────────────────────────────────────────────────────────────────────┤
    │ 列迁移 │ ensure_schema 幂等补列 + 全局标记短路,避免每请求查元数据;首次自动对齐历史水位 │
    ├──────────┼────────────────────────────────────────────────────────────────────────────────────┤
    │ 已读写入 │ seen_at 只在有新内容时写(WHERE seen_at < MAX(items.created_at)) │
    ├──────────┼────────────────────────────────────────────────────────────────────────────────────┤
    │ 通知 │ 保留但默认关闭;后台开关开启后批量写入(分块 100、排除操作者与主题作者,避免重复) │
    └──────────┴────────────────────────────────────────────────────────────────────────────────────┘

    四、新增功能

    • 订阅者通知开关(后台站点设置,默认关),文案:你订阅的专辑《xxx》收录了新主题《yyy》,链接挂在主题上
    • 顶部菜单「淘帖」入口,链接到大家的淘帖
    • 主题作者通知保留(实时单条)

    五、线上排障

    • 卡片首次不显示:根因是插件未同步(manifest/hook 未刷新到运行态),后台“同步插件”后即恢复
    • 提示:后续升级文件后记得同步插件,否则新 hook(如 top.menu_links)不会生效

    性能结论

    新增逻辑均为索引内小查询/O(1) 判断;唯一“每次页面”成本是首页聚合(已有闸门+缓存),量级可控。剩余可选微优化:详情页两次查询可合并为一
    次 JOIN(未做)。

    #8
  • bbs1org

    版本 1.0.20 更新:
    实时通知(进通知中心)

    ┌────┬──────────────────────┬────────────┬──────────────────────────────────────────────────────────┬──────────────────────────┐
    │ # │ 触发时机 │ 收件人 │ 文案 │ 开启方式 │
    ├────┼──────────────────────┼────────────┼──────────────────────────────────────────────────────────┼──────────────────────────┤
    │ 1 │ 主题被收录进专辑 │ 主题作者 │ 你的主题《yyy》被收入到淘帖专辑《xxx》。(点开跳主题) │ 常开 │
    ├────┼──────────────────────┼────────────┼──────────────────────────────────────────────────────────┼──────────────────────────┤
    │ 2 │ 专辑有新主题被收录 │ 所有订阅者 │ 你订阅的专辑《xxx》收录了新主题《yyy》。(批量写、去重) │ 后台开关,默认关 │
    ├────┼──────────────────────┼────────────┼──────────────────────────────────────────────────────────┼──────────────────────────┤
    │ 3 │ 专辑被某用户订阅 │ 专辑创建者 │ 你的淘帖专辑《xxx》被 yyy 订阅。 │ 常开(自己订阅自己不发) │
    ├────┼──────────────────────┼────────────┼──────────────────────────────────────────────────────────┼──────────────────────────┤
    │ 3b │ 专辑被某用户取消订阅 │ 专辑创建者 │ 你的淘帖专辑《xxx》被 yyy 取消订阅。 │ 常开 │
    ├────┼──────────────────────┼────────────┼──────────────────────────────────────────────────────────┼──────────────────────────┤
    │ 4 │ 专辑邀请协作者 │ 被邀请人 │ 你已被邀请协作维护淘帖专辑《xxx》。 │ 常开 │
    └────┴──────────────────────┴────────────┴──────────────────────────────────────────────────────────┴──────────────────────────┘

    (创建者 ≠ 主题作者时,1 和 2 可能同时触发;各自独立。)

    非通知渠道(不占通知中心)

    • 首页侧栏卡片「淘帖专辑更新」:专辑名 + 未读徽章 N(懒统计,需登录);进详情页标记已读
    #9
  • 秦始黄

    这个插件增加的帖子页查询次数挺多的

    #10
  • bbs1org

    版本 1.0.21 更新:
    在主程序升级到9.0之前,请不要更新此插件,避免兼容问题

    #11
  • bbs1org

    版本 1.0.24 更新:
    优化样式细节

    #12
  • bbs1org

    版本 1.0.25 更新:
    优化细节

    #13
  • bbs1org

    版本 1.0.26 更新:
    修正通知格式或者积分变动不进积分规则的问题

    #14
  • bbs1org

    版本 1.0.27 更新:
    主题详情页 topic_collections_after_view() 不再查询当前用户的可管理专辑

    #15
  • bbs1org

    版本 1.0.31 更新:
    批量预载优化

    #16
  • bbs1org

    版本 1.0.32 更新:
    支持v10

    #17
  • bbs1org

    版本 1.0.33 更新:
    更新版本号

    #18
  • bbs1org

    版本 1.1.2 更新:
    优化位置

    #19
  • bbs1org

    版本 1.3.0 更新:
    优化布局

    #20
  • bbs1org

    版本 1.4.2 更新:
    优化布局

    #21
  • bbs1org

    版本 1.4.3 更新:
    优化细节

    #22
  • bbs1org

    版本 1.4.4 更新:
    优化细节

    #23

发表回复

登录后回复