Shopify集合页构造子产品handle后无法正确获取对应产品ID如何解决
错误原因
- 循环外定义的
producthandles_homme、producthandles_femme变量没有在每次循环内重置,导致每次循环都会把之前所有父产品的handle拼接在一起,生成的子产品handle完全无效,无法通过all_products获取到正确的子产品ID - 多余拼接了父产品ID到结果中,需求仅需要子产品ID来拉取评论,不需要拼接父产品ID
- 缺少子产品存在性判断,当子产品handle不存在时会生成无效值
修复后代码
{% assign allinone = "" %} {% for product in collection.products %} {# 每次循环单独构建当前父产品对应的两个子产品handle,不要复用全局累加的变量 #} {% assign child_handle_homme = product.handle | append: '-tshirt-homme' %} {% assign child_handle_femme = product.handle | append: '-tshirt-femme' %} {# 先判断子产品是否存在,避免输出无效ID #} {% if all_products[child_handle_homme] %} {% assign allinone = allinone | append: all_products[child_handle_homme].id | append: ',' %} {% endif %} {% if all_products[child_handle_femme] %} {% assign allinone = allinone | append: all_products[child_handle_femme].id | append: ',' %} {% endif %} {% endfor %} {# 移除最后多余的逗号 #} {% assign allinone = allinone | slice: 0, -1 %} <div class="avis-verifies-etoiles-collection"> <div class="NETREVIEWS_PRODUCT_STARS" data-product-id="{{ allinone }}"></div> </div>
注意事项
如果你的子产品handle后缀实际为-tshirt-man和-tshirt-woman,把代码里的-tshirt-homme、-tshirt-femme替换为对应后缀即可。
内容的提问来源于stack exchange,提问作者Coline CERVELLIN
相关产品推荐
相关产品推荐

