Добавление переменной в For Loop Liquid

Можно ли назначить переменную и использовать эту переменную в операторе цикла for?

Я пытаюсь разместить коллекцию продуктов в блоге, не создавая новый цикл for для каждой статьи, которая нуждается в коллекции.

То, что я сделал, - это использование тегов статьи и разделение непосредственно перед дескриптором коллекции, чтобы я мог вставить его в цикл for, но он еще не совсем работает динамически ...

Here's what I've done.. I added in the article tags

collection_some-page-handle
Then in the article.liquid

    {% for tag in article.tags %}

      {% assign tagMap = tag | split: '_' %}
      {% if tagMap.first == 'collection' %}
        {% assign collectionName = tagMap.last %}
      {% endif %}
    {% endfor %}
    {{collectionName}} <!-- this shows the handle of the collection -->
    {% for product in collections.collectionName.products limit: 8%}
    <div class="productWrap">
            <a href="{{ product.url}}"><img src="{{ product.featured_image | product_img_url: 'medium' }}" alt=""></a>
          <a href="{{product.url}}"><p class="product_title" style="border-top:1px solid #efefef;">{{ product.title | split: ' - ' | first }}</p></a>
    </div>
    {%endfor%}

Теперь, если я попытаюсь поместить переменную в цикл for, это не сработает, но, конечно, если я поставлю фактический дескриптор, он будет работать. Есть ли способ сделать это динамически?


person Dustin Lee    schedule 18.04.2018    source источник


Ответы (1)


Вместо использования collections.collectionName используйте collections[collectionName].

Это должно решить вашу проблему, если ваша переменная действительно имеет правильный дескриптор.

Чтобы уточнить, когда вы используете collections.collectionName, вы говорите: «Дайте мне коллекцию с дескриптором collectionName».

Когда вы используете collections[collectionName], вы говорите: «Дайте мне коллекцию, используя переменную collectionName в качестве дескриптора».

person drip    schedule 18.04.2018
comment
Это ПОЛНОСТЬЮ решило это! Я не знал, что смогу это сделать! Идеально! Спасатель жизни - person Dustin Lee; 18.04.2018