Жидкая итерация переменной внутри инструкции

#for-loop #liquid

#для цикла #liquid

Вопрос:

Я знаю, как это сделать с объектами, но в моем конкретном случае есть некоторые нюансы. Я пытаюсь выполнить итерацию var i внутри объекта. Пожалуйста, смотрите ниже, я пробовал различные изменения в синтаксисе, но, похоже, не могу заставить это работать. Возможно ли это? Если кто-нибудь знает о какой-либо подтверждающей документации, я бы тоже хотел ее увидеть, но, похоже, нигде не могу ее найти.

 <div class="grid--square">
  {% for i in (1..12) %}

  <div role="button" class="grid__item one-quarter" style="background:{% if settings.grid_[i]_image %}url({{ 'grid_[i].png' | asset_url }}){% else %}{{ settings.grid_[i]_color }}{% endif %};">
    {% if settings.grid_[i]_link != blank %}
      <a href="{{ settings.grid_[i]_link }}"></a>
    {% endif %}
    {%if settings.grid_[i]_text != blank %}
      {% unless settings.grid_[i]_image %}
        <div class="text">
          <h2>{{ settings.grid_[i]_text }}</h2>
        </div>
      {% endunless %}
    {% endif %}
  </div>
  {% endfor %}
</div>
  

Ответ №1:

Я достиг решения, захватив каждую переменную, чтобы я мог изменить весь объект.

 <div class="grid--square">
      {% for i in (1..12) %}
        {% capture enable_image %}grid_{{ i }}_image{% endcapture %}
        {% capture image %}grid_{{ i }}.png{% endcapture %}
        {% capture color %}grid_{{ i }}_color{% endcapture %}
        {% capture text %}grid_{{ i }}_text{% endcapture %}
        {% capture link %}grid_{{ i }}_link{% endcapture %}
        <div role="button" class="grid__item one-quarter" style="background:{% if settings[enable_image] %}url({{ image | asset_url }}){% else %}{{ settings[color] }}{% endif %};">
          {% if settings[link] != blank %}
            <a href="{{ settings[link] }}"></a>
          {% endif %}
          {%if settings[text] != blank %}
            {% unless settings[image] %}
              <div class="text">
                <h2>{{ settings[text] }}</h2>
              </div>
            {% endunless %}
          {% endif %}
        </div>
      {% endfor %}
    </div>