ECCUBEの最近のブログ記事

規格によって価格が変わるとき、価格が一覧できないのは不親切。

さらに、規格が一覧表示できないのも不親切だと思うの。

規格1のみしか使わないので、規格2はノータッチ。


1)規格をプルダウンからラジオボタンに変更

Smarty/templates/テーマ名/products/datail.tpl

【変更前】

<!--▼規格1-->

<ul class="clearfix">

    <li><!--{$tpl_class_name1|h}-->:</li>

    <li>

        <select name="classcategory_id1" style="<!--{$arrErr.classcategory_id1|sfGetErrorColor}-->">

        <!--{html_options options=$arrClassCat1 selected=$arrForm.classcategory_id1.value}-->

        </select>

        <!--{if $arrErr.classcategory_id1 != ""}-->

        <br /><span class="attention">※ <!--{$tpl_class_name1}-->を入力して下さい。</span>

        <!--{/if}-->

    </li>

</ul>

<!--▲規格1-->


【変更後】

<!--▼規格1-->

<h2>サイズの選択</h2>

<!--{html_radios name="classcategory_id1" options=$arrClassCat1 selected=$arrForm.classcategory_id1.value}-->

<!--{if $arrErr.classcategory_id1 != ""}-->

<br /><span class="attention">※ <!--{$tpl_class_name1}-->を選択して下さい。</span>

<!--{/if}-->

<!--▲規格1-->


これだと、ラジオボタン表記になるものの、

○選択して下さい ○13.5mm ○15mm ○16.5mm ○18mm

となり、汎用性がないので、radioを展開する。

プルダウン用のデータなので「選択してください」って項目ができちゃうので、それは省く。


【変更後】

<!--▼規格1-->

<h2>サイズの選択</h2>

<!--{foreach from=$arrClassCat1 item="prices" key="key"}-->

<!--{if $key !="__unselected"}-->

<label/><input type="radio" name="classcategory_id1" value="<!--{$key}-->" /><!--{$prices}--></label>

<!--{$arrProductsClass}-->

<!--{$objProduct}-->

<!--{/if}-->

<!--{/foreach}-->

<!--▲規格1-->


さらに、それぞれのサイズごとの価格を表示したい。

そのためには、価格をテンプレ側に送り出さないといけない。


data/class/pages/products/LC_Page_Products_Detail.php

【変更後】追加のみ

// 商品規格情報の取得

$this->arrProductsClassList = $this->lfGetProductsClass($product_id);



Smarty/templates/テーマ名/products/datail.tpl

【変更後】

<!--▼規格1-->

<h2>サイズの選択</h2>

<!--{foreach from=$arrProductsClassList item="kikaku1" key="key"}-->

<label/><input type="radio" name="classcategory_id1" value="<!--{$kikaku1.classcategory_id1}-->" /><!--{$kikaku1.classcategory_name1}--></label>

<!--{$kikaku1.price02}-->円

<!--{/foreach}-->

<!--▲規格1-->


結局始めと全然違う変数つかってるけど、こっちだけ使った方がシンプル。


変化はないけど、一応headのjs部分でイベントを、プルダウン選択から、ラジオボタン選択に変更する。

Smarty/templates/テーマ名/products/datail.tpl

【変更前】

var $sele1 = $form.find('select[name=classcategory_id1]');

【変更後】

var $sele1 = $form.find('input[name=classcategory_id1]:radio');


■参考サイト

http://ec-cube.nakweb.com/blog/785.html



2)通常価格、販売価格のエリアに、価格が反映されるようにする。

(price01_dynamicに動的な価格が入る)

価格反映のイベントを、プルダウン選択から、ラジオボタン選択に変更する。


/js/products.js

【変更前】

      // 規格1選択時

      $('select[name=classcategory_id1]')

 

【変更後】

      // 規格1選択時

      $('input[name=classcategory_id1]:radio')



これで完成。