You need to enable JavaScript to run this app. 能否基于Shopify调用snippet的模板类型,用Liquid条件隐藏礼品卡库存行
优惠活动
大模型
产品
解决方案
定价
更多

能否基于Shopify调用snippet的模板类型,用Liquid条件隐藏礼品卡库存行

实现方案

完全不需要新建独立snippet,依托Shopify原生Liquid能力即可在现有snippet内直接实现礼品卡场景的库存区块隐藏,无额外资源开销、复用性不受影响。

核心实现逻辑

Shopify为产品对象内置了product.is_gift_card布尔属性,只要当前渲染上下文存在product对象即可直接读取——你现有代码已经直接使用product.available做库存判断,说明无论该snippet经过多少层模板嵌套传递,product对象的上下文都是天然存在的,不需要修改上层文件的参数传递链路。
只需要在原有的库存行显示判断条件里,增加“排除礼品卡产品”的判断逻辑,即可让礼品卡场景下服务端直接不渲染库存状态区块,比前端JS隐藏更稳定。

调整后的完整snippet代码

将原有product-page-1-description.liquid中判断库存行显示的条件从:
{%- if item.show_quantity -%}
修改为增加排除条件的版本:
{%- if item.show_quantity and product.is_gift_card == false -%}
调整后完整代码如下:

{%- if item.show_product_main_info -%}
  <div class="tt-add-info">
    <ul>
      {%- if item.show_quantity and product.is_gift_card == false -%}
      <li class="availability">
        <span>{{ 'products.product.availability' | t }}</span>
        {% if product.available %}
        <span class="stock_quantity hide"></span>
        <span class="in_stock hide">{{ 'products.product.in_stock' | t }}</span>
        <span class="many_in_stock hide">{{ 'products.product.many_in_stock' | t }}</span>
        <span class="sold_out hide">{{ "products.product.sold_out" | t }}</span>
        <span class="continue_out hide">{{ "products.product.purchase_when_out_of_stock" | t }}</span>
        {% else %}
        <span class="sold_out">{{ "products.product.sold_out" | t }}</span>
        {% endif %}
      </li>
      {%- endif -%}
    </ul>
  </div>
{%- endif -%}

注意事项

  • 该判断逻辑由服务端直接控制输出,不会出现前端加载时库存区块先显示再被隐藏的闪烁问题,稳定性远高于前端JS隐藏方案。
  • 不要通过判断当前模板文件名/模板类型做筛选,不同商家给礼品卡配置的自定义模板命名没有统一规范,容易出现漏判;product.is_gift_card是Shopify平台层面对产品类型的原生标记,无论礼品卡使用什么模板、走哪条snippet调用链路,判断都会稳定生效。
  • 后续如果有其他特殊产品类型需要隐藏库存行,直接在现有判断条件后追加and逻辑即可,不需要拆分多个独立snippet,完全满足复用性要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 03:06:11