#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