主题块定位
主题块定位允许主题开发者指定哪些块可以被使用在某个区域。在一个主题区域中,主题开发者可以选择:
- 接受所有主题块的使用
- 接受特定主题块的使用
接受所有主题块
通过在该区域的 schema 的 blocks 属性 中添加类型为 @theme
的通用条目,即可接受该区域中所有主题块的使用。如果需要对特定区域中允许使用的块进行更严格的限制,请使用 块定位。
在以下示例中,该区域将可以访问所有主题块。
{% content_for 'blocks' %}
{% schema %}
{
"name": "Section",
"blocks": [{"type": "@theme"}]
}
{% endschema %}
接受特定主题块
要接受特定主题块,主题开发者可以在 schema 中显式引用这些块。在以下示例中,轮播图区域将只能访问 Slide 主题块。在编辑器中,轮播图的块选择器只会显示一个块:slide。默认情况下,主题块在所有区域和其他主题块中都可用。在本示例中,slide 块将会出现在所有区域的块选择器中,而不仅仅是轮播图区域。
{% content_for 'blocks' %}
{% schema %}
{
"name": "Slide"
}
{% endschema %}
{% content_for 'blocks' %}
{% schema %}
{
"name": "Slideshow",
"blocks": [{"type": "slide"}]
}
{% endschema %}
私有块
在某些情况下,你可能希望限制某些块在区域中的可用性。例如,slide 是一种应该仅在轮播图区域中使用的块类型。要防止默认行为,主题开发者可以将块命名为以下划线开头。
在这种情况下,slide.liquid
可以重命名为 _slide.liquid
。所有以下划线开头的块将不会出现在 blocks 或 sections 中,且这些块和区域需要通过基础文件名显式添加。例如:“blocks”: [ { “type”: “_slide” } ]
{% schema %}
{
"name": "Slide"
}
{% endschema %}
{% content_for 'blocks' %}
{% schema %}
{
"name": "Slideshow",
"blocks": [{"type": "_slide"}]
}
{% endschema %}