Shopify themes, liquid, logos, and UX
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 %}
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).
Here is an alternative way to get the count:
product.options_by_name['Color'].values.size
User | RANK |
---|---|
205 | |
150 | |
69 | |
46 | |
38 |
Thanks to all Community members that participated in our inaugural 2 week AMA on the new E...
By Jacqui Mar 10, 2023Upskill and stand out with the new Shopify Foundations Certification program
By SarahF_Shopify Mar 6, 2023One of the key components to running a successful online business is having clear and co...
By Ollie Mar 6, 2023