web-dev-qa-db-fra.com

Comment utiliser plusieurs arguments dans une instruction if avec Liquid

Je veux utiliser une instruction if dans Liquid avec plusieurs conditions. Quelque chose comme:

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

Plusieurs conditions ne semblent pas fonctionner. La syntaxe est-elle incorrecte ou Liquid ne peut-il pas gérer ce type de déclaration if?

37
Fisu

Malheureusement, Liquid a une mauvaise implémentation de l'algèbre booléenne.

En utilisant opérateurs et tags de Liquid, voici une sale façon de le réaliser:

{% 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

Une autre façon de condenser cela est de combiner les instructions else if, et les booléens n'ont pas nécessairement besoin du "==" lors de l'évaluation de true:

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