如何在带有 Liquid 的 if 语句中使用多个参数

Posted

技术标签:

【中文标题】如何在带有 Liquid 的 if 语句中使用多个参数【英文标题】:How to use multiple arguments in an if statement with Liquid 【发布时间】:2014-05-28 02:04:44 【问题描述】:

我想在 Liquid 中使用带有多个条件的if 语句。比如:

% if (include.featured == "true" and product.featured == "true") or (include.featured == "false" and product.featured == "false") %

多个条件似乎不起作用。是我语法错误还是 Liquid 无法处理这种 if 语句?

【问题讨论】:

在您的特定示例中,您可以使用% if include.featured == product.featured % 【参考方案1】:

另一种可以浓缩的方式是结合 else if 语句,并且布尔值在评估 true 时不一定需要“==”:

% if include.featured and product.featured %
      % assign test = true %
% elsif include.featured == false and product.featured == false %
      % assign test = false %
% endif %

【讨论】:

elseif 拼写为 elsif 代表 jekyll - 否则这对我很有帮助。【参考方案2】:

不幸的是,Liquid 的布尔代数实现很差。

使用 Liquid 的 operators 和 tags,这是一种肮脏的实现方式:

% if include.featured == true and product.featured == true %
      % assign test = true %
% endif %

% if include.featured == false and product.featured == false %
      % assign test = true %
% endif %

% if test %
      Yepeeee!
% endif %

【讨论】:

您也可以使用 if/elsif 将所有内容放在一起。 '||'也变成“或”:~)

以上是关于如何在带有 Liquid 的 if 语句中使用多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Liquid - if contains 语句在 for 循环中不起作用

在 C# 中使用带有多个 if 语句的 else

如何在 Django 的视图中清理多个嵌套的 if 语句

哪个更好:多个“if”语句或一个带有多个条件的“if”?

带有多个 if 语句的意图

如何在 Liquid 或 Javascript 中循环使用 YAML 集合和 110 中的子集合?