EN
Shopify 知识库 · 概念

Layout、Template、Section、Block 与 Snippet

Shopify 主题 Layout、Template、Section、Block 与 Snippet:把目录转成渲染关系,区分页面骨架、可配置区域和复用代码。

读主题时可以沿这条教学顺序追踪:页面类型 → 模板 → 分区 → 区块;Layout 提供外层结构,Snippet 提供可复用的代码片段。它不是所有主题的逐行执行顺序,而是定位责任的办法。

flowchart TD
    request["页面请求与资源上下文"] --> template["Template<br/>选择并组合页面区域"]
    layout["Layout<br/>共享外层骨架"] -->|承载页面输出| template
    template -->|组合| section["Section<br/>页面级可配置区域"]
    section --> sectionBlock["Section block<br/>所属 Section 定义"]
    section --> themeBlock["Theme block<br/>主题级可复用"]
    app["应用扩展"] --> appBlock["App block"]
    appBlock -->|在允许位置使用| section
    layout -->|render| snippet["Snippet<br/>稳定渲染片段"]
    section -->|render| snippet
    sectionBlock -->|render| snippet
    assets["Assets<br/>CSS、JavaScript、媒体"] -.-> layout
    assets -.-> section
    config["Config 与 Settings"] -.->|提供配置值| layout
    config -.->|提供配置值| section
    locales["Locales"] -.->|提供翻译| layout
    locales -.->|提供翻译| section

这是职责与查找路径,不是固定执行时序;具体引用关系必须回到所分析主题的固定版本源码确认。

各层负责什么

层次常见位置要回答的问题
Layoutlayout哪些外层结构被多个页面共享
Templatetemplates这个页面类型使用哪些内容区域
Sectionsections商家可以配置什么区域
Section Groupsections 中的 JSON页头、页尾等区域如何组合分区
Block主题 blocks 或分区定义区域内部如何拆分可配置内容
Snippetsnippets哪段代码需要在多处复用
Supporting filesassets、config、locales样式脚本、配置与翻译分别在哪里

官方架构说明解释这些目录的职责。Snippet 不会因为被复用就自动成为编辑器中可添加的区块。

三种 Block 不能混为一谈

Theme block 是主题中可复用的区块;section block 由所属分区定义;app block 来自应用扩展。它们的定义位置与使用条件不同,读文件时先确认类型,再查引用。Blocks。

从一个功能反查源码

以文章页的分享区域为例:先找到文章使用的模板,再确定内容分区;检查分享功能由区块、代码片段还是脚本承担;最后核对编辑器是否暴露配置。文件名只能作为搜索线索,结论要以所分析主题版本的实际源码为准。

JSON 模板主要保存分区组合与配置,Liquid 模板可以包含 Liquid 与 HTML;使用 JSON 模板时,展示代码在它引用的分区中。Templates。

常见误解

目录结构不是每个文件都必须存在的清单;主题中的个别脚本文件也不是平台规定的标准文件。文件数量因主题和版本而异,旧版客户账户模板(customers/*)已被官方标为 deprecated,阅读时按所分析的版本核对,不套用固定总数。

继续阅读页面映射与配置定义和保存值。

使用 Vite 开发主题时,工具接入方法见 ShopZend 的 vite-plugin-shopify-theme 产品页与开始使用。