割引率の表示について(利用テーマ:Prestige 5.7.0)

Topic summary

Prestige 5.7.0のproduct-item.liquidに%OFFラベルを追加したところ、割引率が常に「0%」表示になる問題。CSS設定や表示自体は機能しており、スクリーンショットが添付されている。

原因として、割引率の計算式が不適切な可能性が指摘された。正しい式は「(割引前価格−価格) / 割引前価格 × 100」。

用語補足:product.compare_at_price=割引前価格、product.price=販売価格(割引適用後)。この対応として、Liquidでの例として「discount = product.price | minus: product.compare_at_price」「discount_percentage = discount | divided_by: product.compare_at_price | times: 100」が提示された。

最新の提案は計算方法の見直しで、分母を割引前価格にすることが重要と示唆。具体的な修正後の動作確認や解決報告はまだなく、スレッドは継続中。

Summarized with AI on December 27. AI used: gpt-5.

割引前価格と販売価格(割引適用後価格)を商品ごとに入力したものに対して、「●%OFF」という表示が出るようにしたく、スぺニットの「product-item.liquid」内の

{%- if product.available -%} 部分に以下
{%- if product.compare_at_price > product.price -%}
{{ ‘product.labels.on_sale’ | t }}

{% assign discount = product.compare_at_price | minus: product.price %}
{% assign discount_percentage = discount | divided_by: product.price | times: 100 | round %}
{{ discount_percentage }}% OFF
{%- endif -%}
{%- else -%}
{{ ‘product.labels.sold_out’ | t }}
{%- endif -%}

というような形で以下4行を追加しました。

また、CSS部分に色の設定なども施していて、%表記まではきちんと出るのですが、0%という表示になってしまいます。

解決策をご教示いただきたいです。よろしくお願いいたします。

はじめまして、Takaseと申します。

おそらくですが、割引率の計算に問題があるように思われます。

割引率は下記の計算で出すことができます。

(割引前価格 - 価格) / 割引前価格 * 100

liquidに合わせて考えてみると
割引前価格 → product.compare_at_price
価格 → product.price

となり、計算式に当てはめると下記のようにになるかと思います。

{% assign discount = product.price | minus: product.compare_at_price %}

{% assign discount_percentage = discount | divided_by: product.compare_at_price | times: 100 %}