Shopify 主题开发:什么时候买主题、二开或自研?
从现有主题是否值得保留出发,梳理 Shopify 现成主题、商业主题二开、自有主题与 headless 的选择边界,并说明组件分层、Theme Editor、应用集成、版本控制与性能验收。
约三千七百字·读约十一分钟 · English
做 Shopify 店铺时,“买主题还是自研”经常是项目开始的第一个问题。我更关心的是:现有主题还能不能支撑接下来的开发?
只要店铺前台仍使用 Shopify 的 Online Store channel,就离不开 theme。主题由 Liquid、HTML、CSS、JavaScript 等文件组成,可以购买,也可以自己开发。“不用商业模板”依然是在做 Shopify 主题。这里说的 headless,则是把 storefront 独立出来,通过 Shopify API 接入交易能力。
我的判断比较保守。假如 header、导航、商品主区、cart、全局样式和大部分前端脚本都要重写,我就不会再把它当作“买个主题改一改”。团队实际维护的已经是一套自有主题,只是还沿用着商业主题的代码。

图 1. Shopify 官方主题架构示意:layout 提供外层框架,template 与 section group 负责不同区域的编排,section、block 和 snippet 分别承担模块、可编辑内容与代码复用。
先分清主题开发、headless 与交易平台的边界
可以先用下面的流程图梳理需求:店铺是否继续使用 Shopify Online Store 和 Shopify Checkout?如果继续用,现有主题的核心结构又能保留多少?

图 2. 主题开发、headless 和更换交易平台不是同一个层级的选择。
如果仍使用 Shopify Online Store 和 Shopify Checkout,我会先考虑主题开发。Liquid 配合少量 JavaScript 和 Ajax API,已经能处理不少商品页、购物车和局部页面更新的交互。只为了让技术栈显得“现代”,没必要引入 React。
如果你需要定制结账的信息、配送或支付步骤,先验证 Shopify Plus 的 Checkout Extensibility 能否覆盖需求。这些步骤中的 Checkout UI extensions 目前只对 Plus 开放,而且是在指定扩展点添加界面和流程,并不等于可以自由替换整套结账页面。Headless storefront 也不会绕过这类计划与平台限制。
如果关键业务规则受限于 Shopify 的结账、支付、订单或数据能力,就要重新评估交易平台。先做一个 headless 商品页,解决不了这些限制。
四条开发路线怎么选
| 路线 | 适用情况 | 需要承担的维护工作 |
|---|---|---|
| 现成主题配置 | 新品牌、标准商品结构,页面与主题默认能力接近 | 内容配置、应用兼容与版本更新 |
| 商业主题二开 | 核心结构可保留,只增加少量模块、样式或交互 | 定制代码与上游主题升级的合并 |
| 自有主题 | 导航、商品页、购物车与设计系统需要长期统一维护 | 主题代码、编辑器体验、性能与应用接入 |
| Headless storefront | 前端需要与已有主站、CMS、App 或 PWA 共用架构 | 独立前端、API 集成与相应的运营工具 |
具体选哪条路线,要看接下来准备改动哪些核心部分。
什么时候买主题就够了
对于新品牌,如果产品结构标准,首页和商品页与现成主题差得不远,我会先买 Theme Store 主题,做好配置,把时间留给选品、内容和转化验证。这个阶段,先造一套组件库未必划算。
运营能调整颜色、字体、图片、文案和主题已有的区块,页面结构和交互却仍受主题限制。等到需求变成换 header、换产品卡、重排商品页、改 cart 逻辑,再加五种活动页模板,后台设置就不够用了。
什么时候商业主题值得二开
现有主题的基础结构还合用时,局部二开通常比较省事:新增一个营销 section,调整商品卖点,补一个小交互,或修改卡片样式,让它更符合品牌。
我会先检查这些改动会不会碰到主题的核心部分:
layout、header 和 footer 是否要重做。- 商品主区和 product card 是否要重做。
- cart 的布局或交互是否要重做。
- 全局设计 token、CSS 架构和主要 JavaScript 是否都要替换。
- 未来半年是否还会持续加功能。
如果多数答案都是“要”,我倾向于换掉这个底座。继续改也能上线,但主题升级、样式冲突和新应用接入会越来越难处理,后续维护可能吃掉最初省下的时间。
主题升级也要提前考虑。Theme Store 主题有新版本时,可以把更新副本加入 draft themes。编辑器里的设置、区块顺序、内容和 app 配置会复制过去;代码改动则只有在不冲突时才会保留,有冲突的部分需要团队自己迁移。外部购买或上传的主题,不享受同样的更新支持。
二开前最好就决定:以后继续合并上游更新,还是由团队独立维护这个分叉版本。两种做法都可以,但需要有人负责。
什么时候该做自己的 theme
如果设计系统、商品信息结构和运营方式都需要长期维护,我通常更愿意做自有主题。Shopify 已经提供了标准主题目录、Liquid、Ajax API、CLI 和 Theme Check,不必从零实现电商系统。新主题可以从 Skeleton 起步,也可以参考 Dawn 的 Online Store 2.0 实现。
我会在这些情况下直接建议自有主题:
- 产品页、集合页、cart 和导航要一起重做。
- 不同品类的商品需要不同的信息结构,而不是同一张详情页多塞几个开关。
- 运营每周都要改页面,现成主题的编辑器却不符合他们的工作方式。
- 主题里的旧脚本、旧 CSS、历史应用代码已经让排错变慢。
- 团队准备长期维护 storefront,而不是做一次短活动。
自有主题的代码和维护都由团队负责。相比把商业主题大幅改写,我更愿意用一套统一的设计和逻辑,少处理一些与原主题的冲突。
自有主题的组件与数据该怎么拆
拆主题时,我会尽量避免“万能 section”:一个模块既管轮播,又管评论、订阅和文章列表,代码难改,运营在编辑器里也难用。

图 3. 一套能长期维护的主题,应该把页面编排、内容模块、技术复用、展示设置和业务数据分开。
Template:页面编排
JSON template 决定一个页面默认有哪些 section、顺序是什么。产品、集合、文章和普通页面可以各用不同 template。同一类资源也可以有多个 template。这样不必把所有判断都塞进一个巨大的 main-product.liquid。
Section:页面模块
Hero、图文分栏、商品卖点、FAQ、推荐商品,适合做成 section。它们能在 JSON template 中被添加、删除和排序。 一个 section 最好只负责一类内容。比如卖点区可以提供两三种布局,轮播、评论、订阅和文章列表则另做模块。
Block:模块内的可编辑内容
FAQ 条目、产品页信息项、图文卡、按钮组都适合。按 Shopify 的建议,block 不宜切得太碎,版式也应该适应不同的 block 顺序。 如果标题、文字、图标和链接总是一起出现,就把它们放在同一个 block 里,免得运营拆开后影响排版。
Snippet:技术复用
product card、价格、图片、图标和表单字段可以放在 snippet。Snippet 不会出现在 Theme Editor 里,因此不要把运营必须配置的东西藏在里面。
Settings 与 metafield:展示配置和业务数据
全局字体、颜色和通用布局偏好适合放进 settings_schema.json。Section 与 block 的局部选项放进各自 schema。商品材质、尺码表、护理说明、产地这类会随着商品变化的内容,通常更适合放在 product metafield,再通过 dynamic source 连到区块上。 这不是 Shopify 的强制规则,但这样做能避免同一份商品事实被复制到很多页面配置里。
Theme Editor 才是你交给运营的产品
运营日常改内容、搭页面,主要用的就是 Theme Editor。做主题时,我会把它和前台放在同样重要的位置。

图 4. 开发者写 schema,运营在 Theme Editor 中改内容、顺序和开发者开放的设置。预览应该尽可能接近发布后的 storefront。
设置多了,运营反而可能不知道怎么选。比起先放上一堆开关、颜色、间距和布局选项,我会先问清楚他们怎么工作:新品上架要改什么?活动页要拖哪些模块?临时换主视觉,要动哪几个地方?再按这些操作开放设置。
设置可以定义在全局、section 或 block 层,部分设置还能连接 dynamic source。开发时,除了普通页面加载,也要在编辑器里测试 section 的增删、移动和重载。Shopify 要求预览尽量与线上 storefront 一致;编辑 section 或 block 时,编辑器也会触发相应事件。
应用集成优先使用 app block 与 app embed
评论、订阅、搜索、会员这类带独立后台和业务逻辑的功能,优先选择支持 Online Store 2.0 的 app block 或 app embed。Theme app extension 会把应用的 Liquid block、静态资源和可配置项放到 Theme Editor 中,不需要 app 安装时直接改 theme 文件。
如果现成应用不够用,准备自己开发 App,可以先看Shopify App 技术选型:何时用官方模板,何时混合或自建,确定商家在哪里操作、哪些 Shopify 接入逻辑由团队维护。环境搭建可参考Shopify 应用开发环境搭建与配置实战教程,其中的终端示例使用旧版 Shopify CLI 和 Remix 脚手架。
直接修改 theme 文件的应用,升级或卸载后往往会留下难以追溯的代码。App block 通过 Shopify 的扩展机制接入,来源和接入方式更清楚,但样式与性能仍要在真实商品页、cart 和移动端测试。
自有 App 如果还要调用 Admin API、处理 Webhook 或做后台同步,再看Shopify Online Token 和 Offline Token 怎么选,按员工权限与店铺级任务的需要选择凭证,安排 token 的保存与刷新。
版本控制、预览与性能要一起设计
主题代码也需要版本控制、预览和发布流程。可以先用 Shopify CLI 创建开发主题,做本地检查。Theme Check 能在 CLI、CI 或编辑器里检查 Liquid 和 JSON,包含语法错误、缺失模板、未使用变量、废弃标签和部分性能问题。
使用 Shopify GitHub integration 后,在后台保存的 theme editor、code editor 和 theme app 变更,都会自动提交到关联分支。这方便追踪改动,却不会替团队做 code review。 生产主题的直接编辑权限因此要收紧,后台做过的紧急修复,也要回填到团队维护的源代码中。
活动页和大促最好走独立分支与 draft theme。Shopify 的版本控制指南就建议把非主分支用于活动,活动结束后再切回主分支。
性能问题要在开发时就检查。首屏 LCP 图片不要 lazy-load,并应提高下载优先级。产品信息、首屏文案和导航等关键内容应由 Liquid 和 HTML 直接输出,不要等 JavaScript 再补。嵌套 Liquid loop 会随着商品和变体数量增加拖慢服务端渲染,过多 preload 和第三方脚本也会抢首屏资源。
Shopify 要求提交到 Theme Store 的主题,在首页、产品页和集合页的 Lighthouse 性能测试中,平均分至少达到 60。 60 分只代表达到上架门槛。我不会把它当成自用主题的性能目标,验收时仍要用实际商品数量、图片、应用和移动网络来测试。
三个常见项目,我会怎么选
刚上线的 DTC 品牌,如果商品结构简单,视觉与现成主题接近,我会先买主题,做配置或小范围二开。等店铺开始卖货,再判断哪些地方值得开发。
品牌确定要长期经营,产品页、导航、购物车和内容模块都要重做,运营还经常搭活动页,我会选自有主题。继续改商业主题,后面仍要处理那些结构冲突。
公司已经有主站、CMS、原生 App 或 PWA,前端必须与现有系统共用,Shopify 只负责交易,这时我会评估 headless。Shopify 官方也建议,在现有销售渠道、主题和应用无法满足架构、流程或体验要求时,再考虑承担 custom storefront 的复杂度。
选型的关键是未来的维护成本
对多数 Shopify 店铺,主题是把交易、内容编辑、应用和结账接起来最快的方式。我更愿意根据后续的开发量选底座:现有主题还能用,就尽量少改,保留升级能力;核心结构需要重做,就在 theme 体系内做自有主题。等到 Online Store 本身无法满足 storefront 的需求,再考虑离开主题体系。
参考资料
以下为文中引用的 Shopify 官方资料。涉及计划限制和平台能力时,请以官方文档为准。
- Shopify Build themes
- Shopify Theme architecture
- Shopify Building with sections and blocks
- Shopify Theme settings
- Shopify Theme app extensions
- Shopify Updating themes
- Shopify Version control for themes
- Shopify GitHub integration for themes
- Shopify Theme Check
- Shopify Performance best practices for themes
- Shopify Custom storefronts
- Shopify Checkout app extensions
- Shopify Theme editor
本文根据用户提供的 Manus AI 原稿整理。图 1、图 4 为原稿中的 Shopify 官方示意图与截图,图 2、图 3 为原稿配图;四张图片均已保存为本站资源。
Mttao GitHub ↗
探索技术与生活的智慧