Как я могу уменьшить массив зацикленной статьи.теги в жидком коде Shopify

#shopify #liquid #shopify-app #shopify-template #shopify-api

#shopify #жидкость #shopify-приложение #shopify-шаблон #shopify-api

Вопрос:

Я пытаюсь перебрать статьи в блоге, чтобы узнать, содержит ли article.tags какое-либо значение в тегах, где taggs — это массив, который должен быть предоставлен пользователем. Я хочу получить массив связанных статей по тегу.

Ниже приведен мой пример кода:

 {% assign taggs = "T-shirt,bag,Purse,Handbag" | split: "," %}
{%- assign length = b_s.related_article_blog_count | plus: 0 -%}
  {% capture fourthtag %}{{ taggs[3] | downcase }}{% endcapture %}
    <div class="jj-post-content">
      <div class="item">
        {%- for article in blogs[blog].articles limit: length -%}
          {% if article.tags contains fourthtag %}
            <a href="{{ article.url }}">
              <div class="jj-title">{{ article.title }}</div>
            </a>
          {%- endif -%}
        {%- endfor -%}
       </div>
      </div>
 

Когда я запускаю код, он не возвращает результата. Но когда я создал теги статей в нижнем регистре, я отфильтровал все статьи, как и ожидалось. Учитывая, что многие пользователи могут не создавать теги в нижнем регистре, мне нужен способ уменьшить значение article.tags из цикла.

Я пробовал {% capture atc %}{{ article.tags | downcase }}{% endcapture %} перед циклом, но он не работал.

Ответ №1:

Я придумал это. Создайте строку, нормализуйте строки, чтобы удалить как можно больше странностей, переделайте в массив для использования с итерацией.

 {%- assign normalized_article_tags =  article.tags | join:"," | downcase | split:"," %}
{% if normalized_article_tags contains fourthtag %}
 

Вы также должны удалить лишние пробелы, конец строк, html и / или обработать теги для дальнейшей нормализации данных, которые соответствуют потенциально неоднозначным пользовательским данным.

Далее

   {% capture fourthtag %}{{ taggs[3] | downcase }}{% endcapture %}
 

может стать

   {% assign fourthtag = taggs[3] | downcase %}
 

Попробуйте зарезервировать использование capture для выходных данных, которые будут повторяться, например, для рендеринга фрагментов, попытки выполнить своего рода псевдо-интерполяцию или текст длинной формы, который было бы неудобно использовать только с оператором assign . https://shopify.dev/api/liquid/tags/variable-tags#capture