Shopify жидкость л oop current_tags - PullRequest
2 голосов
/ 07 мая 2020

Shopify создает URL-адрес для каждого фильтра коллекции. Этот URL https://example.com/collections/default/type_tag+size_tag+width_tag будет фильтровать продукты в коллекции под названием default, чтобы отображать продукты, помеченные тегами type_tag, size_tag, width_tag.

Это также создает каноническую ссылку с тем же href, что и указанный выше URL. . В этом примере канонический href будет <link rel="canonical" href="https://example.com/collections/default/type_tag+size_tag+width_tag">

Мы хотим оптимизировать для SEO. Для URL-адресов с одинаковыми фильтрами, но инвертированными (и, следовательно, с той же страницей и отфильтрованным содержимым) мы хотели бы иметь тот же канонический href.

Например: эти URL-адреса будут фильтровать одни и те же продукты в коллекциях default и отображать канонические файлы с совпадающим значением href.

https://example.com/collections/default/type_tag+size_tag+width_tag https://example.com/collections/default/size_tag+width_tag+type_tag https://example.com/collections/default/type_tag+width_tag+size_tag https://example.com/collections/default/width_tag+type_tag+size_tag

Независимо от URL-адресов выше, мы хотели бы, чтобы канонический href был зафиксирован как мы устанавливаем. Итак, в качестве примера мы хотим, чтобы указанные выше URL-адреса имели https://example.com/collections/default/type_tag+size_tag+width_tag как канонические.

Как вы можете видеть, наши теги сгруппированы по типу_, размеру_ и ширине _.

Я пробовал несколько методов l oop над объектом {% current_tags %}, чтобы проверить, содержит ли какой-либо из тегов в {% current_tags%} type_, size_ и width_. Ниже представлена ​​идея, которая у меня есть, но она явно не работает, поэтому это tra sh. Fre sh идей пожалуйста и спасибо !!!

{% if template contains 'collection' and current_tags %}
{% for tag in current_tags %}  
   {% if current_tags contains 'type_' %}
       {% assign type_tag_url = tag  %}
   {% elsif current_tags contains 'size_' %}
       {% assign size_tag_url = tag  %}
   {% elsif current_tags contains 'width_' %}
       {% assign width_tag_url = tag  %}
   {% endif %}
{% endfor %}

<link rel="canonical" href="{{ shop.url }}{{ collection.url }}/{{type_tag_url}}+{{size_tag_url}}+{{width_tag_url}}" />

{% else %}
        <link rel="canonical" href="{{ canonical_url }}">
{% endif %}

1 Ответ

1 голос
/ 07 мая 2020

current_tags - это массив. Когда вы используете оператор contains для поиска элементов в массиве, сравнение работает на основе точного совпадения. Таким образом, вы не можете использовать его, чтобы проверить, содержит ли он теги, содержащие часть строки, например type_. Вместо этого проверьте сами теги, например:

{% if template contains 'collection' and current_tags %}
  {% for tag in current_tags %}  
    {% if tag contains 'type_' %}
       {% assign type_tag_url = tag  %}
    {% elsif tag contains 'size_' %}
       {% assign size_tag_url = tag  %}
    {% elsif tag contains 'width_' %}
       {% assign width_tag_url = tag  %}
    {% endif %}
  {% endfor %}

  <link rel="canonical" href="{{ shop.url }}{{ collection.url }}/{{type_tag_url}}+{{size_tag_url}}+{{width_tag_url}}" />

{% else %}
  <link rel="canonical" href="{{ canonical_url }}">
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...