Section blocks
Section(区块)可以在它们自己的 schema 中定义 block。你可以用 section block 来在某个特定的 section 里创建可自定义的内容布局。section block 只能用在它定义的那个 section 里,不能嵌套别的 block,也就是说你不能用它来创建层级结构。
想了解更多关于 section block 的内容,可以参考 blocks 属性的官方文档,以及 section schema。
在 section 里定义 block
在你的 section 的 schema 里,加一个 blocks 数组。这个数组里的每个对象都代表一个只属于这个 section 的 block。
下面是一个例子:
{"name": "Example section","blocks": [{"type": "heading","name": "Heading","settings": [{"type": "text","id": "heading","label": "Heading","default": "Hello, world!"}]}]}
在这个例子里,Example section 包含了一个 Heading block。这个 block 有以下这些数据:
type:是 block 的唯一标识符settings:是一个数组,包含了这个 block 可以自定义的选项
渲染 block
在你 section 的 Liquid 文件中,可以用循环来遍历这个 section 的 block,然后根据 block 的 type 来渲染它。你可以用 block 这个 Liquid tag 来访问 block 的设置。下面是一个例子:
{% for block in section.blocks %}{%- case block.type -%}{%- when "heading" -%}<h1>{{ block.settings.heading }}</h1>{% endcase %}{% endfor %}
在这个例子里,for 循环遍历了 section 中的每一个 block,然后通过 block.settings.heading 来输出每个 block 的标题。
注意事项
不要依赖 block 的 ID 的字面值来做逻辑判断。这个 ID 是动态生成的,可能会变。如果你写成下面这样,ID 一变就会导致你的主题功能出错:
{% for block in section.blocks %}{%- if block.id == 'J6d9jV' -%}<h1>{{ block.settings.heading }}</h1>{% endif %}{% endfor %}
