Labo

[EC-CUBE 2.11.2] 商品一覧に定価と○○%OFFを表示したい

2011年10月23日 / 投稿者名:fukap


 

これも結構使うカスタマイズだと思いますが、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.2] 商品一覧に定価と○○%OFFを表示したい への5件のコメント

  1. uu より:

    通常価格の表示まで出ますが、割引率表示されませんでした。

    使用バージョン:EC-CUBE 2.11.5

  2. uu より:

    できました!
    通常価格のところの値段表示線で引けば最高だけどね。

  3. fukap より:

    本記事は2.11.2バージョンを前提に作成しましたので、
    2.11.5をご利用の場合は読み替えが必要になるかもしれません。
    無事できたようで良かったですね。

    通常価格のところの値段表示線で引けば最高、とのことですが、
    値段表示線とは何ですか?ググってみましたが、ちょっとわかりませんでした。
    価格表示取り消し線のことですか?

  4. Akari より:

    こちらのページを参考に通常価格と○○%offの表示を実装致しました。
    PCページとモバイルページは問題なく表示されたのですが、スマートフォンページにて、
    「もっとみる」を押した以降に表示される商品に関して、作動しないのですが、何か解決方法をご存知ではないでしょうか?

    現状では「もっとみる」を押した以降の商品については通常価格も○○%offの表示共に、
    全て「もっとみる」を押す前の商品一覧の最後の商品と同一になってしまいます。
    何か解決策をご存知でしたらご教示頂けますと幸いです。
    よろしくお願いします。

  5. ピンバック: [EC-CUBE 2.12.1] 商品一覧に定価と○○%OFFを表示したい | NAKWEB × EC-CUBE

fukap へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。