[ec-cube] 通常価格と販売価格が違う場合は「○○%OFF」の表示する

通常価格と販売価格が違う場合は「○○%OFF」の表示する

毎度のことながらコアファイルはイジらずにテンプレートだけで処理します。

基本的になロジックは

■販売価格と通常価格が同じ金額であれば、
 通常価格は表示せず、販売価格だけの表示になります。

■販売価格と通常価格が違う金額であれば、
 打ち消し線を入れた通常価格と「○○%OFF」を表示させます。
 ついでに、販売価格も赤字のボールド文字にします。

「○○%OFF」の表記は
100 – (販売価格 ÷ 通常価格 × 100) =○○%OFF』(※小数点以下は四捨五入で切り上げ)
という計算で自動で出しています。

やってみる

/data/Smarty/templates/default/products/detail.tpl
の価格表示部分だけ抜粋します。

<!--{if $arrProduct.price01_min == $arrProduct.price02_min}-->

  <!--{if $arrProduct.price01_max > 0}-->
    <tr>
      <td style="white-space: nowrap;width:1%;">販売価格:&nbsp;&nbsp;</td>
      <td>
          <!-- 販売価格 -->
            <!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
                <!--{$arrProduct.price02_min|number_format}-->円 (税込<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円)
            <!--{else}-->
                <!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円
            <!--{/if}-->
          <!-- /販売価格 -->
      </td>
    </tr>
  <!--{/if}-->

<!--{else}-->

    <tr>
      <td style="white-space: nowrap;width:1%;line-height: 180%;vertical-align:top;">通常価格&nbsp;&nbsp;</td>
      <td style="line-height: 180%;">

            <!--{php}-->
            //OFF値表示の計算
            $arrProduct = $this->get_template_vars('arrProduct');
            $OffPrice1 = "" . 100-($arrProduct[price02_min]/$arrProduct[price01_min]*100) . "";
            $OffPrice2 = "" . 100-($arrProduct[price02_max]/$arrProduct[price01_max]*100) . "";
            $this->assign('OffPrice1',$OffPrice1);
            $this->assign('OffPrice2',$OffPrice2);
            <!--{/php}-->

            <!-- 通常価格 -->
              <!--{if $arrProduct.price01_min == $arrProduct.price01_max}-->
                  <s><!--{$arrProduct.price01_min|number_format}--></s>円 
                  <span style="color:#993300;font-weight:bold;">▼<!--{$OffPrice1|round:0}-->% OFF</span>
              <!--{else}-->
                  <s><!--{$arrProduct.price01_min|number_format}-->〜<!--{$arrProduct.price01_max|number_format}--></s>円<br />
                  <span style="color:#993300;font-weight:bold;">▼Max<!--{$OffPrice2|round:0}-->% OFF</span>
              <!--{/if}-->
            <!-- /通常価格 -->
      </td>
    </tr>
    
    <!--{if $arrProduct.price01_max > 0}-->
      <tr>
        <td style="white-space: nowrap;width:1%;">販売価格:&nbsp;&nbsp;</td>
        <td>
            <!-- 販売価格 -->
            
              <!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
                  <span style="color:#993300;font-weight:bold;font-size:12px;"><!--{$arrProduct.price02_min|number_format}-->円</span> (税込<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円)
              <!--{else}-->
                  <span style="color:#993300;font-weight:bold;font-size:12px;"><!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円</span>
              <!--{/if}-->
            
            <!-- /販売価格 -->
        </td>
      </tr>
    <!--{/if}-->

<!--{/if}-->

Similar posts