关于私有主题 2.1 与 3.0 开发对比指南
如果您目前正在使用基于 OS 2.1 架构的私有主题,计划升级至基于 OS 3.0 架构重新开发主题,本文将帮助您全面了解两者开发的区别,包括优势对比、语法差异、插件兼容、语言配置、常见风险与操作建议,助力您实现更高效、稳定且长期可持续的主题管理体验。
迁移优势概览
适用场景:
适用于已开发并上线 2.1 私有主题的商家,计划升级至架构更统一、功能更完整的 OS 3.0,以获得长期的主题支持与性能优化。
对比维度 |
OS 2.1 私有主题 |
OS 3.0 私有主题(迁移后) |
| 系统架构 | 老版本架构,维护逐步收尾 | 全新架构,未来持续优化更新 |
| 模板语法 | Handlebars | Sline(更高渲染性能,更统一调试体验) |
| 多语言/多市场支持 | 支持但灵活度有限 | 配置能力更完整,支持主市场、多语言等高阶场景 |
| 模板管理 | 单一模板支持 | 支持主副模板管理,提升页面灵活性 |
| 模块配置 | 功能相对分散 | 模块市场、组件结构更强大,支持更多级嵌套 |
| 渲染性能 | 相对普通 | Sline 编译更快,性能提升明显 |
| 插件兼容性 | 依赖性强,部分插件需定制 | 原生集成更多能力,统一适配 |
| 插件兼容性 | 已进入维护尾声 | 后续能力将仅在 3.0 架构上持续演进 |
主题语法差异与改造说明
以下是 OS 2.1 和 OS 3.0 的语法差异,需要将 Handlebars 模板语法全面改写为 Sline。以下是常见语法对照:
对比项 |
Handlebars(主题 2.1) |
Sline(主题 3.0) |
|
| 数据调用 | 手动传值或上下文不统一 | 支持统一的数据上下文引用结构 | |
| 字符串 | 单引号 | 多个字符:'str'
|
仅用于单个字符:'a'
|
| 双引号 | 多个字符:"str"
|
多个字符:"str"
|
|
| 反引号 | 不支持 | 多个字符:`str`
|
|
| 作用域 | this |
{{ this.title }} |
{{ title }} |
./ |
{{ ./title }} |
{{ title }} |
|
../ |
{{ ../title }} |
不支持查找上层作用域 | |
| 表达式 | 数组下标 | {{ products.[0].title }} |
{{ products[0].title }} |
| 变量取值 | {{ get key (get index products) }} |
{{ products[index][key] }} |
|
| 注释 |
|
|
|
| 扩展能力 | Helper |
|
可使用 tag/filter 代替 |
| Tag | 不支持 |
|
|
| Filter | 不支持 | {{ "a,b,c" | split(",") | join("-") }} |
|
插件适配与兼容性说明
适用场景:
建议您检查使用 OS 2.1 期间安装插件是否已完成兼容适配 OS 3.0主题。
操作建议:
- 列出当前主题中所使用的插件。
- 了解SHOPLINE官方插件与三方插件与 OS 3.0 主题的兼容情况。
- 对照SHOPLINE官方发布的插件兼容性清单,详见 OS 3.0 主题介绍(抢先体验阶段)。
- 可以联系外部插件开发者了解与 OS 3.0 主题的兼容情况
- 若插件尚未支持主题 3.0,评估是否已有内建替代功能,或联系插件服务商寻求支持。
- 对于已无法兼容的插件,考虑移除或定制开发替代功能。
|
注意事项:
|
多语言配置迁移说明
适用场景:
原 2.1 主题已启用多语言内容展示,需在迁移至 3.0 后确认翻译字段仍能保留并正确呈现。
操作步骤:
- 检查所有富文本、模块配置中的翻译字段结构。
- 建议从主市场的默认语言开始逐一验证翻译内容。
|
注意事项:
|
自定义数据组件(UGC)迁移流程
适用场景:
若原 2.1 主题中使用了自定义数据组件(UGC),迁移至 OS 3.0 后需要手动导入并重新绑定使用。
迁移步骤:
- 在迁移前,前往 UGC 配置页面导出组件的 JSON 配置文件。
- 在 OS 3.0 主题中重新创建对应组件结构。
- 将导出的 JSON 文件导入至新组件,并完成绑定。
- 建议搭配使用 UGC 多语言翻译插件进行迁移。
|
注意事项:
|
使用风险与温馨提示
- 所有 Handlebars 语法需手动改写为 Sline,无法自动转换。
- 插件支持情况需提前确认,并预留替代方案。
- 当前不支持通过市场机制本地化设置页头、页脚及部分全局设定。
- 建议有开发能力的商家优先执行迁移流程。
- 强烈建议先在测试环境演练整个流程后再上线。
- 所有 UGC 数据必须导出备份后再重新建立。