narzero
narzero

Reputation: 2299

Show item quantity in shopping cart for a product when on the collections page

I'm in need of some help, what I'd like to do is best described as follows:

When on the collections page
If Product X is added 2 times to the cart
Then add the number 2 next to that product
So the customer knows what products are already inside the cart

So basically, if taking a look at the collections page, I want to be able to see what products are already added into the cart.

I've tried this:

<!-- From 'product-grid-item.liquid' of the default Supply theme -->

{% assign count = 0 %}

{% for item in cart.items %}
  {% if product.variants.first.id == item.id %}
    {% assign count = count | plus: 1 %}
  {% endif  %}
{% endfor %}

{% if count > 0 %}<span>{{ count }}</span>{% endif %}

But it simply returns a 1 for Product X. It should return a 2 since it's added twice.

What am I doing wrong?

Upvotes: 0

Views: 3882

Answers (2)

narzero
narzero

Reputation: 2299

Here's the working code:

{% assign count = 0 %}

{% for item in cart.items %}
  {% if product.id == item.product.id %}
    {% assign count = count | plus: item.quantity %}
  {% endif  %}
{% endfor %}

{% if count > 0 %}<span>{{ count }}</span>{% endif %}

Upvotes: 2

Funk Doc
Funk Doc

Reputation: 1643

This is because cart.items returns the line items. So it will only return once per unique item id. If you want to count the total item quantity for any item id you need to look at line_item.quantity. Reference docs.shopify.com/themes/liquid-documentation/objects/cart

Upvotes: 1

Related Questions