EC-CUBE カスタマイズ データベース書き換えで新属性を追加
EC-CUBE カスタマイズ > EC-CUBE カスタマイズ:応用 > 商品属性追加
カスタマイズ:応用/商品属性追加
商品に新たな属性を追加するカスタマイズを紹介します。
例えば、アルコール商品に対して、
「未成年の飲酒は法律で禁止されています」
という表示をさせるためのチェックボックスを加える場合です。
若干データベースに手を入れる必要があります。
システム開発でお悩みの方は、ネットショップ構築パッケージ EC-Orange にお問い合わせください
データベースへカラムの追加
商品情報を格納しているテーブルは、
dtb_products
テーブルです。
こちらに新たに追加したい項目を加えます。
今回はアルコール商品に対して、
「未成年の飲酒は法律で禁止されています」
という表示をさせるためのチェックボックスを加えます。
テンプレートファイルの編集
フロント表示側
data/Smarty/templates/default/detail.tpl
を編集します。
- 100行目付近
- <h2><!--★商品名★--><!--{$arrProduct.name|escape}--></h2>
- <!--以下を追加-->
- <!--{if $arrProduct.alcohol_flg == 1}-->
- <div>
- <p class="price">未成年の飲酒は法律で禁止されています</p>
- </div>
- <!--{/if}-->
- <!--ここまで-->
- <!--★価格★-->
- <div><!--{$smarty.const.SALE_PRICE_TITLE}--><span class="mini">(税込)</span>:
- <span class="price">
- <!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
- <!--{$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}-->円</span></div>
alcohol_flgの値が1の場合に、上記のメッセージを表示させます。
管理画面側
data/Smarty/templates/default/admin/products/product.tpl
を編集します。
- 150行目付近
- <tr>
- <td bgcolor="#f2f1ec" width="160" class="fs12n">商品コード<span class="red"> *</span></td>
- <td bgcolor="#ffffff" width="557" class="fs10n">
- <span class="red12"><!--{$arrErr.product_code}--></span>
- <input type="text" name="product_code" value="<!--{$arrForm.product_code|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.product_code != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" size="60" class="box60" /><span class="red"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span></td>
- </tr>
- <!--以下を挿入-->
- <tr class="fs12n">
- <td bgcolor="#f2f1ec" width="160">お酒フラグ</td>
- <td bgcolor="#ffffff" width="557">
- <label><input type="checkbox" name="alcohol_flg" value="1" <!--{if $arrForm.alcohol_flg == 1}-->checked="checked"<!--{/if}--> />お酒</label>
- </td>
- </tr>
- <!--ここまで-->
- <tr class="fs12n">
- <td bgcolor="#f2f1ec" width="160"><!--{$smarty.const.NORMAL_PRICE_TITLE}--></td>
- <td bgcolor="#ffffff" width="557">
- <span class="red12"><!--{$arrErr.price01}--></span>
- <input type="text" name="price01" value="<!--{$arrForm.price01|escape}-->" size="6" class="box6" maxlength="<!--{$smarty.const.PRICE_LEN}-->" style="<!--{if $arrErr.price01 != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->"/>円<span class="red10"> (半角数字で入力)</span></td>
- </tr>
「お酒フラグ」のチェックボックスを設置します。
ロジックファイルの編集
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
を編集します。
- 390行目付近、lfRegistProductメソッドに以下を追記します。
- function lfRegistProduct($arrList) {
- $objQuery = new SC_Query();
- $objDb = new SC_Helper_DB_Ex();
- $objQuery->begin();
- // 配列の添字を定義
- $checkArray = array("name", "status", "product_flag","alcohol_flg" //alcohol_flgを追加
- "main_list_comment", "main_comment", "point_rate",
- "deliv_fee", "comment1", "comment2", "comment3",
- "comment4", "comment5", "comment6", "main_list_comment",
- "sale_limit", "sale_unlimited", "deliv_date_id");
- $arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray);
- // INSERTする値を作成する。
- $sqlval['name'] = $arrList['name'];
- $sqlval['status'] = $arrList['status'];
- $sqlval['product_flag'] = $arrList['product_flag'];
- $sqlval['main_list_comment'] = $arrList['main_list_comment'];
- $sqlval['main_comment'] = $arrList['main_comment'];
- $sqlval['point_rate'] = $arrList['point_rate'];
- $sqlval['deliv_fee'] = $arrList['deliv_fee'];
- $sqlval['comment1'] = $arrList['comment1'];
- $sqlval['comment2'] = $arrList['comment2'];
- $sqlval['comment3'] = $arrList['comment3'];
- $sqlval['comment4'] = $arrList['comment4'];
- $sqlval['comment5'] = $arrList['comment5'];
- $sqlval['comment6'] = $arrList['comment6'];
- $sqlval['main_list_comment'] = $arrList['main_list_comment'];
- $sqlval['sale_limit'] = $arrList['sale_limit'];
- $sqlval['sale_unlimited'] = $arrList['sale_unlimited'];
- $sqlval['deliv_date_id'] = $arrList['deliv_date_id'];
- $sqlval['update_date'] = "Now()";
- $sqlval['creator_id'] = $_SESSION['member_id'];
- $arrRet = $this->objUpFile->getDBFileList();
- $sqlval = array_merge($sqlval, $arrRet);
- $sqlval['alcohol_flg'] = $arrList['alcohol_flg']; //追加
- 500行目付近、lfConvertParamメソッドに以下を追加します。
- function lfConvertParam($array) {
- /*
- * 文字列の変換
- * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換
- * C : 「全角ひら仮名」を「全角かた仮名」に変換
- * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します
- * n : 「全角」数字を「半角(ハンカク)」に変換
- */
- // スポット商品
- $arrConvList['name'] = "KVa";
- $arrConvList['main_list_comment'] = "KVa";
- $arrConvList['main_comment'] = "KVa";
- $arrConvList['price01'] = "n";
- $arrConvList['price02'] = "n";
- $arrConvList['stock'] = "n";
- $arrConvList['sale_limit'] = "n";
- $arrConvList['point_rate'] = "n";
- $arrConvList['product_code'] = "KVna";
- $arrConvList['alcohol_flg'] = "n"; //追加
- $arrConvList['comment1'] = "a";
- $arrConvList['deliv_fee'] = "n";
ビューの追加
最後に値を取り出すために、
vw_products_allclass_detail
に
- カラム:alcohol_flg
- データ型:smallint
を追加してください。
EC-CUBEのカスタマイズ・制作会社 強いネットショップ構築します|EC-Orange






