如何在Shopify中实现最多显示10个最近购买商品的再次购买列表?
Shopify 实现最多10个最近购买商品的“再次购买”列表
你可以通过收集订单中的商品项,凑够10个后停止遍历的方式实现需求,以下是两种可选方案:
方案1:显示最近10个购买的商品(含重复购买的同商品)
从最近的订单开始逐个收集商品,直到满10个就停止,支持重复展示同一商品:
{% assign collected_items = '' | split: '' %} {% for order in customer.orders %} {% for line_item in order.line_items %} {% unless line_item.product == nil %} {% if collected_items.size < 10 %} {% assign collected_items = collected_items | push: line_item %} {% else %} {% break %} {% endif %} {% endunless %} {% endfor %} {% if collected_items.size >= 10 %} {% break %} {% endif %} {% endfor %} {% for item in collected_items %} <div class="buy-again-item"> <a class="buy-again-card" href="{{ item.product.url }}"> <img class="buy-again-image" src="{{ item.product.featured_image | img_url: '100x100' }}" width="100" height="100"> <div class="buy-again-info"> <div class="buy-again-title"> {{ item.product.title }} </div> <div class="buy-again-sku"> {{ item.variant.sku }} </div> <div class="buy-again-price"> {{ item.variant.price | money }} </div> </div> </a> </div> {% endfor %}
方案2:显示最近10种不同的购买商品(去重)
如果希望同一商品仅展示一次,优先显示最近购买的不同商品,可使用这个版本:
{% assign collected_items = '' | split: '' %} {% assign added_product_ids = '' | split: '' %} {% for order in customer.orders %} {% for line_item in order.line_items %} {% unless line_item.product == nil %} {% unless added_product_ids contains line_item.product.id %} {% if collected_items.size < 10 %} {% assign collected_items = collected_items | push: line_item %} {% assign added_product_ids = added_product_ids | push: line_item.product.id %} {% else %} {% break %} {% endif %} {% endunless %} {% endunless %} {% endfor %} {% if collected_items.size >= 10 %} {% break %} {% endif %} {% endfor %} {% for item in collected_items %} <div class="buy-again-item"> <a class="buy-again-card" href="{{ item.product.url }}"> <img class="buy-again-image" src="{{ item.product.featured_image | img_url: '100x100' }}" width="100" height="100"> <div class="buy-again-info"> <div class="buy-again-title"> {{ item.product.title }} </div> <div class="buy-again-sku"> {{ item.variant.sku }} </div> <div class="buy-again-price"> {{ item.variant.price | money }} </div> </div> </a> </div> {% endfor %}
关键说明
- 用
split: ''初始化空数组,通过push方法添加符合条件的商品项 - 内外层循环均加入判断,收集满10个商品后立即停止遍历,减少不必要的计算
- 图片地址改用Shopify官方
img_url过滤器,比手动拼接更稳定,可自动适配指定尺寸
内容的提问来源于stack exchange,提问作者kcm
相关产品推荐
相关产品推荐

