Counting the number of colors for an item on a collection page

JonahL
New Member
1 0 0

I'm trying to add a count of the number of available colors for an item on the listing on the collection page.  I have looked at many different articles and threads to build my code. Based on the articles I've read my code should work, but it only outputs the total count of all variants (size/color) plus 1. Here's my code:

 

 
{% assign value = 0 %}
  
  {% if product.available %}
    {% for product_option in product.options_with_values %}
{% if product_option.name == 'Sizes' or product_option.name == 'sizes' or product_option.name == 'size' or product_option.name == 'Size' %}
        {% for value in product_option.values %}
        	{% assign value = value | plus: 1 %}
        {% endfor %}
           {% endif %}
    {% endfor %}
  {% endif %}
  
  {% if value > 0 %}<small>Colors available - {{ value }}</small>{% endif %}
 
Replies 2 (2)
stelgenhof
New Member
2 0 1

Hi,

You don't need to loop and count the number of options. The Liquid template language has a filter called size that counts the number of items.
This is how I use on my shop:

 

{% if product.available %}
  {% for product_option in product.options_with_values %}
    {% if product_option.name == 'Color' or product_option.name == '色' %}
       <div class="h5">
         Available colours: {{ product_option.values | size }}
       </div>
    {% endif %}
  {% endfor %}
{% endif %}

 

(I have a multilingual shop hence the '色' option value).

onspruce
Shopify Partner
12 0 2

Here is an alternative way to get the count:

 

product.options_by_name['Color'].values.size