Shopify基于集合标题输出内容时重复结果的问题排查
问题原因分析
你的代码会同时输出两个结果,核心问题在于字符串包含判断的逻辑和循环结构:
- 假设有一个集合标题是
China,vietnam,第一个循环的contains "China"条件会直接成立——因为China,vietnam本身就包含China这个子串,所以会输出"This is china"。 - 第二个循环的
contains "China,vietnam"条件也会对这个集合成立,因此又输出"This is china and vietnam"。 - 两个独立的
for循环会分别遍历所有集合,各自触发符合条件的输出,最终导致重复结果。
解决方案
把两个循环合并,并且优先判断更具体的条件,避免子串匹配导致的误触发:
{% for collection in product.collections %} {% if collection.title contains "China,vietnam" %} This is china and vietnam {% elsif collection.title contains "China" %} This is china {% endif %} {% endfor %}
这样调整后,同一个集合只会触发最匹配的那个条件:
- 先检查集合标题是否包含
China,vietnam,满足则输出对应内容,跳过后续判断 - 若不满足,再检查是否包含
China,满足则输出对应内容
如果你的需求是:商品只要属于China集合就输出第一个内容,属于China,vietnam集合就输出第二个,且两个集合可能同时存在,那这个逻辑也能保证每个集合只触发一次对应输出,不会重复。
内容的提问来源于stack exchange,提问作者Rahul Dogra
相关产品推荐
相关产品推荐

