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

Shopify中能否在JSON schema标签内使用Liquid对象?

关于Shopify Schema中使用Liquid对象的问题解答

哎,刚好之前研究过这个问题,很遗憾的是——Shopify的{% schema %}标签内部的JSON内容是不支持直接使用Liquid对象的,包括你想加的{{ product.id }}这种动态值。

为什么不行?

Shopify处理主题模板的顺序是先解析{% schema %}里的JSON结构(用来生成主题编辑器的配置界面),这个阶段Liquid还没开始渲染,所以动态变量根本不会被解析。而且schema里的配置项ID必须是固定字符串,因为Shopify会把设置值和固定ID绑定存储,动态ID的话主题编辑器根本没法提前识别这些字段,自然也没法保存对应的设置值。

替代实现方案

既然直接在schema里加动态ID走不通,我们可以换个思路来实现“每个产品有独立自定义文本”的需求,这里推荐几个靠谱的方案:

  • 使用产品元字段(Metafields)(最推荐)
    这是Shopify官方支持的产品级自定义字段方案:

    1. 先在Shopify后台给产品添加一个元字段(比如命名空间设为custom,键设为text_custom_1,类型选“单行文本”)
    2. 在product-template.liquid里直接调用这个元字段的值:
    {{ product.metafields.custom.text_custom_1.value }}
    

    这样每个产品都能单独设置自定义文本,完全满足你的需求,而且不需要依赖主题编辑器的schema设置。

  • 主题设置+产品标签/选项匹配
    如果一定要用主题编辑器的设置界面,可以先在schema里创建多个固定ID的文本字段:

    {% schema %}
    {
      "name": "Product pages",
      "settings": [
        {
          "type": "text",
          "id": "text_custom_1",
          "label": "Custom text for Product A"
        },
        {
          "type": "text",
          "id": "text_custom_2",
          "label": "Custom text for Product B"
        }
      ]
    }
    {% endschema %}
    

    然后在模板里根据产品的标签或选项来判断显示哪个字段:

    {% if product.tags contains "product-a" %}
      {{ section.settings.text_custom_1 }}
    {% elsif product.tags contains "product-b" %}
      {{ section.settings.text_custom_2 }}
    {% endif %}
    

    不过这个方案扩展性差,适合产品数量不多的场景。

  • 自定义Liquid片段+硬编码产品ID
    如果你只有少量产品需要自定义内容,可以写一个Liquid片段(比如snippets/product-custom-text.liquid),里面用case语句匹配产品ID:

    {% case product.id %}
      {% when 123456789 %}
        这是产品1的自定义文本
      {% when 987654321 %}
        这是产品2的自定义文本
      {% else %}
        默认显示的文本
    {% endcase %}
    

    然后在product-template.liquid里引入这个片段:

    {% render 'product-custom-text' %}
    

    这个方法不需要依赖后台设置,但产品多了的话维护起来会很麻烦。

内容的提问来源于stack exchange,提问作者simon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:15:44