Shopify液环电流标签

Shopify液环电流标签,shopify,liquid,shopify-template,Shopify,Liquid,Shopify Template,Shopify为每个集合过滤器创建一个URL。此URLhttps://example.com/collections/default/type_tag+size_tag+width_tag将过滤名为default的集合中的产品,以显示使用type_tag、size_tag、width_tag标记的产品 这还创建了一个与上述URL具有相同href的规范链接。在本例中,规范href是 我们想优化搜索引擎优化。对于具有相同过滤器但反向的URL(因此产生相同的页面和过滤内容),我们希望使用相同的规范hr

Shopify为每个集合过滤器创建一个URL。此URL
https://example.com/collections/default/type_tag+size_tag+width_tag
将过滤名为
default
的集合中的产品,以显示使用type_tag、size_tag、width_tag标记的产品

这还创建了一个与上述URL具有相同
href
的规范链接。在本例中,规范href是

我们想优化搜索引擎优化。对于具有相同过滤器但反向的URL(因此产生相同的页面和过滤内容),我们希望使用相同的规范href

例如:这些URL将过滤集合
默认值
上的相同产品,并显示具有匹配href值的规范

https://example.com/collections/default/type_tag+尺寸标签+宽度标签
https://example.com/collections/default/size_tag+宽度标签+类型标签
https://example.com/collections/default/type_tag+宽度标签+尺寸标签
https://example.com/collections/default/width_tag+键入标签+尺寸标签

不管上面的URL是什么,我们都希望将canonical href固定为我们设置的URL。例如,我们希望上面的URL具有
https://example.com/collections/default/type_tag+尺寸标签+宽度标签
作为标准标签

正如您所知,我们的标记分为类型、大小和宽度

我尝试了几种方法在
{%current\u tags%}
对象上循环,以检查{%current\u tags%}中的任何标记是否包含类型、大小和宽度。下面是我的想法,但显然它不起作用,所以它是垃圾。请提出新的想法,谢谢

{% 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 %}
{%如果模板包含“集合”和当前_标记%}
{当前_标记%中标记的百分比}
{%如果当前的_标记包含“类型”}
{%assign type_tag_url=tag%}
{%els如果当前_标记包含“大小”}
{%assign size\u tag\u url=tag%}
{%els如果当前_标记包含“宽度”}
{%assign width\u tag\u url=tag%}
{%endif%}
{%endfor%}
{%else%}
{%endif%}

当前的标签是一个数组。使用
contains
运算符查找数组中的项时,比较基于精确匹配。因此,您不能使用它来检查它是否包含包含字符串一部分的标记,如
type\uuu
。检查标签本身,例如:

{% 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 %}
{%如果模板包含“集合”和当前_标记%}
{当前_标记%中标记的百分比}
{%如果标记包含“类型”}
{%assign type_tag_url=tag%}
{%elsif标记包含“大小”}
{%assign size\u tag\u url=tag%}
{%elsif标记包含“宽度”}
{%assign width\u tag\u url=tag%}
{%endif%}
{%endfor%}
{%else%}
{%endif%}

感谢您的关注@Vladimir。我以前试过,刚才也试过你的,但都不行。返回的规范是
,我刚刚测试了它,它按预期工作。我打开了
/collections/test/size\u m+type\u t恤+width\u 45cm
路径,下面是规范URL的样子:
/collections/test/type\u t恤+size\u m+width\u 45cm
我一辈子都搞不明白为什么我的返回
/collections/default/++
。在theme.liquid的
标记中,我有
{%render'规范“%}
。我的canonicals代码位于名为
canonicals.liquid
的代码段文件中。无论如何,我会接受这个答案。谢谢,我刚刚使用snippet和
render
操作符对它进行了测试,得到了工作结果。真奇怪。是否有可用于测试的公共URL?请检查此链接以预览我们的测试站点。谢谢