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

如何通过Liquid语句判断产品是否为变体并执行对应代码?

可行实现方案说明

首先要明确:在Shopify Liquid中,product对象本身不是变体(Variant),变体是属于产品的子对象,存储在product.variants数组中,所以你写的{% if product is a variant %}这种写法无法直接生效。根据不同的使用场景,有以下几种可行的实现方式:

1. 判断当前对象是否为变体对象

如果你的代码可能在不同上下文(比如产品模板、变体循环、变体相关代码片段)中复用,需要区分当前处理的是Product还是Variant对象,可以通过以下两种方式判断:

方式一:检查对象的variant_id属性

Variant对象自带variant_id属性,而Product对象没有,因此可以用这个属性作为判断依据:

{% if variant_id %}
  <!-- 变体对象的执行逻辑 -->
{% else %}
  <!-- 产品对象的执行逻辑 -->
{% endif %}

方式二:检查object_type属性

部分Shopify对象包含object_type属性,可以直接判断类型:

{% if object_type == 'variant' %}
  <!-- 变体对象的执行逻辑 -->
{% else %}
  <!-- 产品对象的执行逻辑 -->
{% endif %}

2. 判断产品是否为多变体产品

如果你的需求是根据产品是否包含多个变体来执行不同逻辑(比如单变体产品和多变体产品展示不同UI),可以直接判断产品的变体数量:

{% if product.variants.size > 1 %}
  <!-- 多变体产品的执行逻辑 -->
{% else %}
  <!-- 单变体/无变体产品的执行逻辑 -->
{% endif %}

3. 针对选中变体的逻辑处理

如果是在产品页面中,需要针对当前选中的变体执行特定逻辑,可以先获取选中的变体对象,再进行后续判断:

{% assign current_variant = product.selected_or_first_available_variant %}
{% if current_variant %}
  <!-- 基于选中变体的逻辑,比如显示变体价格、库存等 -->
{% else %}
  <!-- 无可用变体的逻辑 -->
{% endif %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:07