有没有办法在 Shopify 部分中有多个块类型?

Is there a way to have multiple Block types in a Shopify section?

在 Shopify 部分中,我有一个图像选择器块来制作图库,在同一部分中,我有一个 url 块来制作任意数量的按钮。

问题是两种块类型都出现在主题编辑器的同一 'Content' 区域中。这让编辑看起来很困惑。

有没有办法有 2 个单独的块区域,一个用于图片库,另一个用于按钮?

"blocks": [
  {
    "type": "button",
    "name": "Button",
    "settings": [
      {
        "type": "url",
        "id": "button_link",
        "label": "Button link"
      }
    ]
  },
  {
    "type": "image",
    "name": "Image slide",
    "settings": [
      {
        "type": "image_picker",
        "id": "image",
        "label": "Image"
      }
    ]
  }
]

不,目前没有办法告诉 Shopify 以这种方式显示块。所有块都可以按任意顺序排列,而不管每个块的 'type' 是什么。管理商店的人需要手动将块排列成合理的顺序。

如果你想在项目的渲染期间更容易地分割你的块类型,你可以使用这样的东西:

{% assign image_blocks = section.blocks | where: 'type', 'image' %}
{% for block in image_blocks %}
  <!-- Stuff -->
{% endfor %}

{% assign button_blocks = section.blocks | where: 'type', 'button' %}
{% for block in button_blocks %}
  <!-- Stuff -->
{% endfor %}

创建 2 个不同的部分并将两者都包括在内。例如:

{% section 'buttons' %}

{% section 'images' %}

其中:

sections/buttons.liquid

{% schema %}
  {
    "name": "Buttons",
    "class": "buttons-section",
    "blocks": [
      {
        "type": "button",
        "name": "Button",
        "settings": [
          {
            "type": "URL",
            "id": "button_link",
            "label": "Button link"
          }
        ]
      }
    ]
  }
{% endschema %}

sections/images.liquid

{% schema %}
  {
    "name": "Images",
    "class": "images-section",
    "blocks": [
      {
        "type": "image",
        "name": "Image slide",
        "settings": [
          {
            "type": "image_picker",
            "id": "image",
            "label": "Image"
          }
        ]
      }
    ]
  }
{% endschema %}

所以你会得到这个: