产品页的一段说明应该写在哪里?先确认它属于整站骨架、某个模板、可复用模块,还是一项产品数据。文件所在目录只是线索,实际影响范围由谁引用它、谁使用该模板或设置决定。改了layout不等于所有页面一定改变,改了一个模板也不只影响当前预览商品。
目录分工先认清
| 目录 | 主要内容 | 实际检查点 |
|---|---|---|
| layout | 页面公共骨架,如theme.liquid | 哪些模板采用该layout,是否有其他layout或例外 |
| templates | 按页面类型组织JSON或Liquid模板 | 哪个商品、集合或页面分配了哪个模板 |
| sections | 可配置的Liquid内容模块 | JSON模板、section group或静态调用的位置 |
| blocks | 可跨合适section复用的theme blocks | 宿主是否接受并渲染相应block |
| snippets | 通过render等调用的代码片段 | 调用者、传入参数及共享依赖 |
| assets | CSS、JavaScript、图片等资源 | 实际引用、加载条件和浏览器缓存 |
| config | 主题设置定义及保存值 | settings_schema.json与settings_data.json用途不同 |
| locales | 主题与编辑器的翻译文本 | 实际引用的语言键及对应语言文件 |
这是Shopify主题架构中的职责概览,不是“每个目录只能做一件事”的限制。文件夹存在也不证明当前页面使用它;优先从页面类型、已分配模板与实际输出往回找。

JSON模板与Liquid模板:可配置方式不同
模板文档说明页面类型对应模板类型,同一类型可以有多个版本。JSON模板保存section及设置、顺序等数据,HTML与Liquid放在它引用的section里;商家可以在编辑器中增删和重排这些section。
Liquid模板可以直接写HTML与Liquid,也能静态引用section;所以“只有JSON模板才能用section”不准确。静态section不能像JSON模板中的section那样由商家自由移除、重排;同一静态section的设置还可能在多处调用间共享。需要灵活布局时优先评估JSON模板,不把旧结构机械全改。
当前JSON模板文档给出的限制包括每个主题最多1000个JSON模板、每个JSON模板最多25个section、每个section最多50个block;这些是对应结构的容量条件,不是建议填满的数量。block另有静态类型等细节,按实际结构核,不把一个上限扩成全站总数。
section里的block,不都属于同一种实现
theme blocks说明区分:section-defined blocks定义在该section内;theme blocks放在主题的blocks目录,可以在支持它们的其他section中复用,也能嵌套。应用提供的app block又是另一种来源,需要宿主支持。不能只加一个类型声明就假定渲染和交互都完成。
section schema负责编辑器设置和配置,不是Google的结构化数据。settings让人填写内容,blocks定义重复项,presets帮助模块进入添加选择器;实际页面输出仍由Liquid决定。需要实现一个简单说明模块,可接着看自定义section示例。
值放在哪里,要看由谁维护
主题外观设置由config相关文件管理;settings_data.json保存对应主题设置的值,并包含相应静态section数据。JSON模板中的section数据则存于模板本身。商品各自的规格更适合考虑产品元字段,不必为每件商品复制一个模板。
若多个页面都受同一文件影响,测试要覆盖这些调用位置。先保存主题与页面基线,在副本修改,检查空值、长文本、不同模板、手机和主题编辑器;发布后再核真实公开URL。后台保存成功只是其中一步。