web-dev-qa-db-ja.com

Liquidのifステートメントで複数の引数を使用する方法

複数の条件付きのLiquidでifステートメントを使用したい。何かのようなもの:

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

複数の条件は機能しないようです。構文が間違っているか、Liquidがこの種のifステートメントを処理できませんか?

37
Fisu

残念ながら、Liquidはブール代数の実装が貧弱です。

Liquidの 演算子 および 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 %}
43
Sylvain

これを凝縮できる別の方法は、else ifステートメントを結合することです。ブール値は、trueを評価するときに必ずしも「==」を必要としません。

{% if include.featured and product.featured %}
      {% assign test = true %}
{% elsif include.featured == false and product.featured == false %}
      {% assign test = false %}
{% endif %}
10
Daniel