You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify页面内是否可以实例化多个相同的静态section?

问题根因

Shopify 的 Section 机制中,在静态模板中硬编码多次调用同一名称的 Section 时,所有实例会共享同一份 Schema 配置,后台自定义器仅会展示一份配置项,所以所有调用位置的内容会完全一致,这是正常的平台规则,你之前的实现思路没有完全适配平台的限制。

可行解决方案

方案1:使用OS 2.0多实例动态Section(最推荐,支持可视化配置)

该方案适配Shopify Online Store 2.0 主题的标准规则,可以实现每个推荐位独立配置不同集合:

  1. 保留youMightLike.liquid Section 中的presets配置,确保它可以被添加到模板中作为动态Section。
  2. 为你的文章页新建JSON格式模板,在模板的sections字段下定义多个同类型、不同ID的Section实例,示例配置如下:
{
  "sections": {
    "main-article-content": {
      "type": "main-article",
      "settings": {}
    },
    "recommend-1": {
      "type": "youMightLike",
      "settings": {}
    },
    "recommend-2": {
      "type": "youMightLike",
      "settings": {}
    }
  },
  "order": ["main-article-content"]
}
  1. 在你写静态文章HTML的main-article.liquid文件中,对应位置分别调用不同ID的Section实例即可:
<!-- 文章开头的推荐位 -->
{% section 'recommend-1' %}

<!-- 文章内容 -->
<p>文章内容部分</p>

<!-- 文章末尾的推荐位 -->
{% section 'recommend-2' %}

配置完成后,你可以在店铺后台自定义器中为recommend-1和recommend-2分别选择不同的商品集合,互不影响。

方案2:改用Snippet传参调用(适合固定配置的场景)

如果你不需要在后台可视化修改推荐集合,可以直接把Section改为Snippet实现:

  1. 将sections/youMightLike.liquid移动到snippets文件夹下,删除文件中的Schema标签,将集合获取逻辑改为接收传入参数:
<!-- 把原来的获取集合逻辑替换为下面的代码 -->
{% assign target_collection = collections[collection_handle] %}
  1. 在静态文章页的对应位置调用Snippet,传入不同的集合句柄即可:
<!-- 第一个推荐位,传入集合A的句柄 -->
{% render 'youMightLike', collection_handle: 'sale-collection' %}

<!-- 第二个推荐位,传入集合B的句柄 -->
{% render 'youMightLike', collection_handle: 'new-arrival' %}

方案3:单Section多Block按位置渲染

如果你希望只维护一个Section,可以调整Block的渲染逻辑,避免所有内容合并:

  1. 在Section的Schema中保留Block配置,每个Block对应一个推荐位的集合配置。
  2. 在Section代码中提前把不同索引的Block配置赋值给独立变量:
{% assign block_1 = section.blocks[0] %}
{% assign block_2 = section.blocks[1] %}
  1. 在静态文章页的对应位置,分别渲染对应Block的内容即可,不需要一次性循环输出所有Block。

内容的提问来源于stack exchange,提问作者dev-jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:57:00