Personalized checkout and custom promotions with Shopify Scripts
Hi there, I was using this code to display my product discount badge but the code was able to run on span but unable on using assign. Since I want to display the percentage like the second image.
{% if product.compare_at_price >= 0 and product.compare_at_price != null %}
<div class="product-photo-discounted-price-custom">
<span>Save</span>
<!-- <span>{{ product.compare_at_price_max | minus:product.price | times:100 | divided_by:product.compare_at_price_max | json }}%</span> -->
{% assign saving = variant.compare_at_price | minus: variant.price | times: 100 | divided_by: variant.compare_at_price %}
{% assign percentage = saving | at_least: percentage %}
</div>
{% endif %}
Solved! Go to the solution
This is an accepted solution.
Oh. Got it. You just have to add the forloop for variants. Try this
{% if product.compare_at_price >= 0 and product.compare_at_price != null %}
<div class="product-photo-discounted-price-custom">
{% assign percentage = 0 %}
{% for variant in product.variants %}
{% assign saving = variant.compare_at_price | minus: variant.price | times: 100 | divided_by: variant.compare_at_price | round %}
{% assign percentage = saving | at_least: percentage %}
{% endfor %}
<span>Save</span><br>
{{ percentage | append: "%" }}
</div>
{% endif %}
Hi @Boonphei,
Try this code instead.
{% if product.compare_at_price >= 0 and product.compare_at_price != null %}
<div class="product-photo-discounted-price-custom">
<span>Save</span><br>
{{ product.compare_at_price_max | minus:product.price | times:100 | divided_by:product.compare_at_price_max | json }}%</span>
{% assign saving = variant.compare_at_price | minus: variant.price | times: 100 | divided_by: variant.compare_at_price %}
{% assign percentage = saving | at_least: percentage %}
</div>
{% endif %}
Hi @made4Uo,
it was unable to display the percentage too. Since the fourth row of this code have the wrong formula so I want to remove it.
<!-- <span>{{ product.compare_at_price_max | minus:product.price | times:100 | divided_by:product.compare_at_price_max | json }}%</span> -->
This is an accepted solution.
Oh. Got it. You just have to add the forloop for variants. Try this
{% if product.compare_at_price >= 0 and product.compare_at_price != null %}
<div class="product-photo-discounted-price-custom">
{% assign percentage = 0 %}
{% for variant in product.variants %}
{% assign saving = variant.compare_at_price | minus: variant.price | times: 100 | divided_by: variant.compare_at_price | round %}
{% assign percentage = saving | at_least: percentage %}
{% endfor %}
<span>Save</span><br>
{{ percentage | append: "%" }}
</div>
{% endif %}
Learn how to build powerful custom workflows in Shopify Flow with expert guidance from ...
By Jacqui May 7, 2025Did You Know? May is named after Maia, the Roman goddess of growth and flourishing! ...
By JasonH May 2, 2025Discover opportunities to improve SEO with new guidance available from Shopify’s growth...
By Jacqui May 1, 2025