Shopify Liquid中如何在if条件语句内使用过滤器?
Liquid的if语句中能否直接使用过滤器
- 基础原生Liquid语法不支持在
if条件里直接将过滤器和比较运算符无包裹混写,你写的{% if numA | plus:5 >= numB %}运行报错,是因为Liquid语法解析规则中,比较运算符优先级高于过滤器,解析器会直接把numA作为比较左值,后续的| plus:5会被判定为非法语法片段。 - 你目前用
assign提前定义临时变量存储过滤结果的写法是全版本兼容的标准实现,不存在逻辑错误,只是写法偏冗余。
如果要跳过临时变量定义,在目前绝大多数主流Liquid运行环境(包括Jekyll 4.0及以上版本、Shopify线上主题环境、Eleventy的Liquid解析插件等)中,只需要用括号把带过滤器的运算侧整体包裹,强制解析器优先执行括号内的过滤逻辑即可,示例代码如下:
{% if (numA | plus:5) >= numB %} <!-- 此处写条件满足后的执行逻辑 --> {% endif %}
上述写法会先计算numA | plus:5的结果,再和numB做大小比较,不需要额外定义临时变量。
如果你使用的是不支持括号包裹表达式的极老旧Liquid版本,没有其他语法捷径,只能通过提前赋值临时变量的方式实现逻辑。
内容的提问来源于stack exchange,提问作者Seeker
相关产品推荐
相关产品推荐

