跳转到内容

安装与启用模型包

模型包的安装、启用、卸载与主题 / 插件类似——但因为它直接影响内容数据结构,操作前需要更谨慎。

后台入口:扩展市场 → 模型包 Tab

  1. 从可信渠道获取 .zip

    • BangNiCMS 官方
    • 你雇的开发者
    • 公司内部团队
  2. 进「扩展市场 → 模型包」 → 点 上传模型包

  3. 拖拽 / 选择 .zip

    待补充截图 拖拽 zip 文件到上传区,校验通过后显示包名 / 版本 / 描述 / 「启用」按钮
    上传模型包弹窗 + 安装结果
  4. 系统校验

    • 包结构合法
    • 字段定义无冲突(不会跟现有字段重名)
    • 类型合法
  5. 校验通过 → 状态默认「已停用」(不会自动启用,给你检查机会)

  6. 启用前最后检查

    • 该包包含哪些字段?
    • 绑定到哪个内容类型?(产品 / 文章 / 页面 / 下载)
    • 字段是否会和现有字段冲突?
  7. 启用 → 字段立刻在编辑页生效

待补充截图 每张卡片右上角有 toggle 开关 + 当前启用的展示徽章
模型包卡片的启用 / 停用切换

启用

  • 字段在内容编辑页立即出现
  • 已录入的内容会显示新字段为空(还没填)
  • 前台主题如果支持渲染该字段会显示

停用

  • 字段从内容编辑页消失
  • 已录入的数据保留 → 重新启用时会回来
  • 前台不再渲染该字段(即使主题支持)

两种卸载模式(设计上鼓励”归档”):

  1. 卸载

  2. 弹窗显示两个红色按钮:

    ⚠️ 卸载「工业设备字段」模型包
    ① 归档(保留数据)
    字段从编辑页消失,但已录入的字段值保留
    未来重装同名包,数据自动恢复
    ② 彻底删除(不可恢复)
    字段定义 + 所有内容里录入的字段值全部删除
    重装也无法恢复
  3. 归档(保留数据)

  4. 确认归档

  5. 模型包代码包从服务器删除,但字段定义 + 数据仍在数据库

待补充截图 弹窗显示两个红色按钮:「归档(保留数据)」和「彻底删除(不可恢复)」
卸载弹窗的二选一

重装时:上传同名 extensionKey + version 的包 → 字段定义和数据自动恢复 → 编辑页重现该字段。

  1. 卸载 → 选 彻底删除(不可恢复)

  2. 弹窗二次确认

    ⚠️ 危险操作!
    你即将删除:
    - 字段定义 6 个
    - 已录入的数据 247 条(来自 51 个产品)
    该操作不可恢复。请输入「确认彻底删除」继续:
    [_____________________]
  3. 必须手动输入确认文字才能执行

  4. 字段 + 数据彻底从数据库删除

  1. 拿到新版 .zip

  2. 上传模型包

  3. 系统检测到已有同 extensionKey 的旧版本 → 弹窗确认升级

  4. 升级前预览变更

    即将升级:工业设备字段 v1.2 → v1.5
    变更:
    ✓ 新增字段:cad_drawings(CAD 图纸 多文件)
    ✓ 新增字段:iso_certifications(ISO 认证 多选)
    ⚠️ 修改字段:specifications(规格表)
    数据类型 短文本 → 富文本
    现有数据将自动迁移(短文本被包装成 <p> 标签)
    ✗ 删除字段:legacy_serial_no(不再需要)
    现有数据将丢失!如需保留请先导出
  5. 认真审核变更——尤其是删除字段类型变更

  6. 确认升级 → 数据迁移按 manifest 规则执行

  7. 升级后抽样检查 5-10 条内容——确认数据正确

报错原因解决
不是合法 zip包损坏让开发者重新打包
缺少 manifest.json包结构不对让开发者按规范打包
字段冲突field_key 跟现有字段同名让开发者改字段 key 或先卸载冲突包
绑定的内容类型不存在包绑定了不存在的类型让开发者改对

最快恢复:立刻停用该模型包 → 编辑页恢复 → 联系开发者。

如果后台进不去(极少见),让运维:

UPDATE extension SET status = 'disabled'
WHERE extension_type = 'model-package' AND extension_key = 'xxx';

多人同时编辑同一条内容时启用 / 停用包

Section titled “多人同时编辑同一条内容时启用 / 停用包”

避免——可能导致:

  • 正在编辑的人看到”字段突然消失”
  • 保存时报”字段不存在”

最佳实践:在低峰期(晚上 / 周末)操作模型包变更,提前通知运营。

技术上没硬上限。实际建议不超过 10 个同时启用——超过会让编辑页字段过多、渲染慢、运营录入负担大。

校验阶段会拦截——field_key 重复的包不能同时启用。

业务语义上的冲突(两个包都加了”型号”字段,叫不同名字)—— 系统不会拦,需要你自己评估。

启用模型包后字段为什么是空的?

Section titled “启用模型包后字段为什么是空的?”

这是正常的——新字段对已存在的内容默认为空。需要你(或团队)逐条回填

如果业务可接受自动填默认值,让开发者在 manifest 里加 defaultValue——启用时所有现有内容自动填该默认值。

模型包能”灰度启用”吗(仅某些产品先启用)?

Section titled “模型包能”灰度启用”吗(仅某些产品先启用)?”

当前不支持——启用即整个内容类型生效。

如果需要”测试期间只对部分产品启用”:

  • 启用包,但只让运营在测试产品里填该字段(其他产品字段保持空)
  • 主题前台用 if (field is empty) hide 逻辑控制显示

卸载后再装会自动恢复数据吗?

Section titled “卸载后再装会自动恢复数据吗?”

归档卸载:会的——数据库里数据保留,重装即恢复。

彻底删除:不会——数据已删除,重装是空白。

我能自己改模型包里的字段定义吗(不重装包)?

Section titled “我能自己改模型包里的字段定义吗(不重装包)?”

通常不能——字段定义来自 manifest,运营在后台只能调展示属性(如顺序、可见性),不能改类型 / 验证规则。

如果你想改字段本身:

  • 让开发者出新版本包
  • 或自己开发一个新的模型包