これも結構使うカスタマイズだと思いますが、2.11ではやったことなかったので、やってみました。
割引率計算はSmartyでやってもいいんだけど、今回はPHP側で取得してみました。
1.data/class/pages/products/LC_Page_Products_List.php の 138行目付近に以下のコードを挿入
// 商品一覧データに割引率を追加
foreach($this->arrProducts as $key => $this->arrProduct){
// 商品一覧データに割引率を追加
if(isset($this->arrProduct['price01_max'])){
$this->arrProducts[$key]['drate_max'] = round(100 - $this->arrProduct['price02_max'] / $this->arrProduct['price01_max'] * 100);
}
if(isset($this->arrProduct['price01_min'])){
$this->arrProducts[$key]['drate_min'] = round(100 - $this->arrProduct['price02_min'] / $this->arrProduct['price01_min'] * 100);
}
}
一応、規格がある場合を考慮して、最高の標準価格と販売価格で drate_max と、最低の標準価格と販売価格で drate_min を求めてみた。
そして、$this->arrProducts に代入。
2.data/Smarty/templates/default/products/list.tpl の適当な箇所に以下のコードをそれぞれ挿入。
サンプルでは、通常価格は販売価格の上、割引率は販売価格の下に配置しました。
<!--★通常価格★-->
<!--{if $arrProduct.price01_max > 0}-->
<dl class="normal_price">
<dt><!--{$smarty.const.NORMAL_PRICE_TITLE}-->(税込):</dt>
<dd class="price">
<span id="price01_default">
<!--{if $arrProduct.price01_min == $arrProduct.price01_max}-->
<!--{$arrProduct.price01_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$arrProduct.price01_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->~<!--{$arrProduct.price01_max|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->
</span><span id="price01_dynamic"></span>
円
</dd>
</dl>
<!--{/if}-->
<!--★割引率-->
<!--{if $arrProduct.drate_min != ''}-->
<div class="pricebox sale_price">
割引率:
<span class="price">
<!--{if $arrProduct.drate_min == $arrProduct.drate_max}-->
<!--{$arrProduct.drate_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->%OFF
<!--{else}-->
<!--{$arrProduct.drate_max|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->~<!--{$arrProduct.drate_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->%OFF
<!--{/if}-->
</span>
</div>
<!--{/if}-->













通常価格の表示まで出ますが、割引率表示されませんでした。
使用バージョン:EC-CUBE 2.11.5
できました!
通常価格のところの値段表示線で引けば最高だけどね。
本記事は2.11.2バージョンを前提に作成しましたので、
2.11.5をご利用の場合は読み替えが必要になるかもしれません。
無事できたようで良かったですね。
通常価格のところの値段表示線で引けば最高、とのことですが、
値段表示線とは何ですか?ググってみましたが、ちょっとわかりませんでした。
価格表示取り消し線のことですか?
こちらのページを参考に通常価格と○○%offの表示を実装致しました。
PCページとモバイルページは問題なく表示されたのですが、スマートフォンページにて、
「もっとみる」を押した以降に表示される商品に関して、作動しないのですが、何か解決方法をご存知ではないでしょうか?
現状では「もっとみる」を押した以降の商品については通常価格も○○%offの表示共に、
全て「もっとみる」を押す前の商品一覧の最後の商品と同一になってしまいます。
何か解決策をご存知でしたらご教示頂けますと幸いです。
よろしくお願いします。
ピンバック: [EC-CUBE 2.12.1] 商品一覧に定価と○○%OFFを表示したい | NAKWEB × EC-CUBE