根据 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-A
和t-shirt-B
有相似的标签"t",mug-A
和mug-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-A
和 Phonecase-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 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-A
和t-shirt-B
有相似的标签"t",mug-A
和mug-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-A
和 Phonecase-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 来检索链接的产品。