根据 Shopify Liquid 主题中的特定模式选择产品标签

Selecting product tag based on specific pattern in Shopify Liquid theme

我是 Shopify Liquid 主题语言的新手,正在努力寻找自己的方式。我的 Shopify 商店中有以下产品及其标签:

CATEGORY CLOTHING
    t-shirt-A
     - Tags: t, -dog1-

    t-shirt-B
     - Tags: t, cat2

CATEGORY MUG
    mug-A
     - Tags: m, -dog1-

    mug-B
     - Tags: m, cat2

CATEGORY PHONECASE
    phonecase-A
     - Tags: p, -dog1-

    phonecase-B
     - Tags: p, cat2

从以上产品可以看出t-shirt-At-shirt-B有相似的标签"t",mug-Amug-B 有相似的标签 "m", 等等...

您还可以看到 t-shirt-A, mug-A and Phonecase-A 有一个共同的第二个标签 -dog1-。尽管它们属于不同的 collections/categories,但除了特定的第一个标签之外,它们还有 -dog1- 标签。我给了他们额外的 -dog1- 标签,因为他们身上有相同的狗图像。

t-shirt-A, mug-A and Phonecase-A 上面有相同的狗图像。

现在我想要实现的是,当用户在 t-shirt-A 的产品详细信息页面中时,我想显示具有相同图像的其他产品(来自不同类别)。在这种情况下,我希望我的液体主题显示 mug-APhonecase-A,这样用户就会看到 T 恤上的图像也在杯子和手机壳上。

我已经学习了 Liquid 的所有教程以及 filters,但我找不到任何过滤器可以帮助我 select 当前产品的标签与模式匹配,例如 -[a-zA-Z]-.

我说图案匹配的原因是其他 T 恤、马克杯和手机壳上会有 -dog2- 图像。

所以我认为通过模式匹配,您可以 select 当前产品标签数组中匹配的特定标签,例如 -[a-zA-Z]-当您拥有此特定标签时,您可以将其与所有类别中的所有标签以及具有相同标签的 select 产品进行比较。

不要寻找正则表达式选项,而是使用自定义标签前缀来帮助您确定相关标签。

tagPrefix:tagname

这样做你的输入会变成

CATEGORY CLOTHING
    t-shirt-A
     - Tags: t, sameImage:dog1

    t-shirt-B
     - Tags: t, sameImage:cat2

CATEGORY MUG
    mug-A
     - Tags: m, sameImage:dog1

    mug-B
     - Tags: m, sameImage:cat2

CATEGORY PHONECASE
    phonecase-A
     - Tags: p, sameImage:dog1

    phonecase-B
     - Tags: p, sameImage:cat2

然后在您的产品模板中,首先找到相同的图片标签。为此你可以使用

{% for tag in product.tags %}
    {% if tag contains 'sameImage:' %}
      {% assign tagFound = tag %}
    {% endif %}
{% endfor %}

tagFound 变量中获得值后,您可以遍历其他集合并使用具有相同标签的产品。

但是,在我看来,由于产品集合上的循环过多,上述方法看起来效率很低。另一种更好的方法是使用产品元字段来保存产品句柄的信息,然后使用 all_products 来检索链接的产品。

Shopify Metafields API

Shopify Metafields Object