使用循环索引动态输出液体对象

时间:2018-07-30 07:17:19

标签: shopify liquid

我一直在尝试使用变量迭代节的输出,但是我找不到通过串联索引动态输出液体对象的方法。 images[i]是我在{% schema %}部分中设置的图像的ID。

{% for i in (1 .. 5) %}

{% if section.settings.images[i] != blank %}
    {{ section.settings.image[i] }}
{% endif %}

{% endfor %}

2 个答案:

答案 0 :(得分:1)

你快到了。

您需要分配句柄/ id,因为目前images[i]指向不正确的图像数组。

代码应如下所示:

{% for i in (1 .. 5) %}
  {% assign image_handle = 'images' | append: i %}
  {% if section.settings[image_handle] != blank %}
      {{ section.settings[image_handle] }}
  {% endif %}
{% endfor %}

假设您的图片ID被称为images1images2images3等。

PS:

我不确定您的完整代码,但是如果您有一个节,并且您没有使用其块,为什么不使用它们而不是预定义的节字段呢?

{%- for block in section.blocks -%}
  {%- if block.settings.image != blank -%}
    {{ block.settings.image | img_url: '600x' | img_tag }}
  {%- endif -%}
{%- endfor -%}

{% schema %}
{
  "name": "Images",
  "max_blocks": 5,
  "blocks": [
    {
      "type": "image",
      "name": "Image",
      "settings": [
        {
          "type": "image_picker",
          "id": "image",
          "label": "Image"
        }
      ]
    }
  ]
}
{% endschema %}

答案 1 :(得分:0)

我想要这个代码,非常感谢...

这是我的示例代码。

{% for i in (1..10) %}
    {% assign display_brand = 'display_brand_' | append: i %}
    {% assign image_handle = 'image_' | append: i %}
    {% assign link_handle = 'link_' | append: i %}
        {% if block.settings[display_brand] %}
        <div class="brand-item">
            <div class="brand-top">
                {% if block.settings[image_handle] != blank %}
                    <img src="{{ block.settings[image_handle] | img_url: '350x' }}" alt="" />
                {% else %}
                    <div class="not_img">
                        350 x 375px
                    </div>
                {% endif %}
            </div>
            <a href="{{block.settings[link_handle]}}" class="btn">{% render 'multilang' with block.settings.itembuttontext %}</a>
        </div>
        {% endif %}
{% endfor %}