割引の場合に%offと表示させたい

Topic summary

ユーザーがShopifyのDawnテーマで商品割引時に「◯%OFF」を表示させようとしているが、price.liquidにコードを追加しても反映されない問題が発生。

問題点:

  • 追加したコードが正しく動作していない
  • 変数名や構造に誤りがある可能性

解決策:
Qcoltdが調整済みのコードを提供。主な修正内容:

  • current_variant.compare_at_priceではなくcompare_at_priceを使用
  • current_variant.priceではなくpriceを使用
  • 割引率の計算ロジックを修正(float_compare_at_pricesale_perper_offの変数を適切に設定)
  • 条件分岐で割引前価格が設定されている場合のみ表示

提供されたコードスニペットで希望通りの割引率表示が可能になると回答されている。

Summarized with AI on November 22. AI used: claude-sonnet-4-5-20250929.

テーマはDawnを使用しています。

商品が割引時の場合に◯%OFFと表示させたいです。

price.liquidのコードを追加したのですが反映されませんでした。

追加した箇所は下記の、上段のコードと下段のコードの間に追加しました。

対処法などわかる方いらしたら教えていただきたいです。

{%- endunless -%}
{{ ‘products.product.price.sale_price’ | t }}

{{ money_price }}

{% if current_variant.compare_at_price > 0 %}
{% comment %}割引前価格が設定されていればOFF率表記自体する{% endcomment %}
{% assign float_compare_at_price = current_variant.compare_at_price | times: 1.0 %}
{% assign per_sale = current_variant.price | divided_by: float_compare_at_price %}
{% assign float_per_off = 1 | minus: per_sale %}
{% assign per_off = float_per_off | times: 100 | round %}
{{ per_off }}%OFF
{% endif %}

{{ 'products.product.price.unit_price' | t }}

ご質問いただいている割引率の件ですが、Dwanのprice.liquidで『compare_at_price』が割引前価格、『price』が実際の価格として取得されていましたので、掲載いただいていたコードを調整させていただきました。

下記コードでご希望の表示ができるかと思います。

{% if compare_at_price > 0 %}
{% comment %}割引前価格が設定されていればOFF率表記自体する{% endcomment %}
{% assign float_compare_at_price = compare_at_price | times: 1.0 %}
{% assign per_sale = price | divided_by: float_compare_at_price %}
{% assign float_per_off = 1 | minus: per_sale %}
{% assign per_off = float_per_off | times: 100 | round %}
{{ per_off }}%OFF
{% endif %}

ご参考まで。

(キュー小坂)