Передача ранее назначенной переменной в блоке `{% for` в Shopify - PullRequest
0 голосов
/ 20 февраля 2020

В blog-templte.liquid

{% assign articleSortOrder = '' %} 
 ....

{% for article in blog.articles {{articleSortOrder}} %}  

получена ошибка: Liquid syntax error: Unexpected character { in "article in blog.articles {{articleSortOrder}}"

Намерение - передать переменную для сортировки статей в зависимости от некоторого условия.

Q: как заставить это работать?

1 Ответ

0 голосов
/ 20 февраля 2020

Это недействительный код жидкости:

{% for article in blog.articles {{articleSortOrder}} %}

Вы не можете пропустить жидкость внутри жидкости, иначе {% {{ }} %}


Кроме того, для циклов допускается только несколько параметров:

  • reversed - которые обратят l oop
  • limit - что ограничит итерации
  • offset - что заставит l oop пропустить заданное c заданное количество элементов

Сортировка не входит в их число.

Вы можете прочитать больше о для l oop здесь: https://shopify.dev/docs/liquid/reference/tags/iteration-tags


Чтобы отсортировать блог заданным c способом, вы должны закодировать его следующим образом:

{% assign articleSortOrder = '' %} 
{% assign blog_articles_sort = blog.articles | sort: articleSortOrder %}
{% for article in blog_articles_sort %}

{% endfor %}

Где вы присваиваете статьи в определенной c переменной и сортируете их.

Пожалуйста, имейте в виду, что это будет сортировать ТОЛЬКО 50 статей.


Если вам нужно отсортировать более 50, вам нужно перезаписать объект paginate {% paginate blog.articles by 9999 %}

Тогда ваш код будет выглядеть так:

{% paginate blog.articles by 9999 %}
  {% assign articleSortOrder = '' %} 
  {% assign blog_articles_sort = blog.articles | sort: articleSortOrder %}
  {% for article in blog_articles_sort %}

  {% endfor %}
{% endpaginate %}

Подробнее о paginate можно посмотреть здесь: https://shopify.dev/docs/liquid/reference/tags/theme-tags/#paginate


Имейте в виду, что функция сортировки в Shopify ограничена. Возможно, вам придется отсортировать их с помощью javascript или другого подхода в зависимости от того, что вы ищете.

...