2016/03/16
ECCUBE2.13
ECCUBE2.13で商品一覧に説明欄を追加する方法です。
実は、参考サイトを基にカスタマイズしたのですが、2.13では若干違いがあるため備忘録として残します。
参考サイト(2.11と2.12)
EC-CUBEでカテゴリページに説明文を追加する方法
1)DBにデータベースにカラムを2つ追加
dtb_categoryテーブルに以下のカラムを追加します。
カラム名: category_info データ型: text
カラム名: info_flg データ型: smallint
それぞれ「ヌル(NULL)」に「null」を設定し保存します。
2)管理画面から追加・編集できるようにする
カテゴリ編集ページにテキストフィールドを追加します。
/data/Smarty/templates/admin/products/category.tpl
>div class="now_dir"<の直下に下記コードを追加します。
<div class="now_dir"> <!--{if $arrErr.category_name}--> <span class="attention"><!--{$arrErr.category_name}--></span> <!--{/if}--> <input type="text" name="category_name" value="<!--{$arrForm.category_name|h}-->" size="30" class="box30" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.category_name|sfGetErrorColor}-->" /> <br /> <br /> <div> <!--説明追加--> <textarea name="category_info" cols="100" rows="15"><!--{$arrForm.category_info|escape}--></textarea> <br /> <br /> <!--{if $arrForm.level != "1" && $arrForm.parent_category_id != "0"}--><input type="checkbox" name="info_flg" id="info_flg" value="1"<!--{if $arrForm.info_flg}--> checked="checked"<!--{/if}--> /><label for="info_flg" class="fs10n">親カテゴリの説明を引き継ぐ</label><!--{/if}--><span class="red10"> (上限<!--{$smarty.const.LLTEXT_LEN}-->文字)</span> </div> <a class="btn-normal" href="javascript:;" onclick="eccube.setModeAndSubmit('edit','',''); return false;"><span class="btn-next">登録</span></a><span class="attention"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span> </div>
/data/class_extends/page_extends/admin/products/
LC_Page_Admin_Products_Category_Ex.php
まず、LC_Page_Admin_Products_Category.phpの内容をLC_Page_Admin_Products_Category_Ex.phpへコピペします。
それからpublic function initParam()関数の中に下記コードを追加します。
* パラメーターの初期化を行う * * @param SC_FormParam $objFormParam * @return void */ public function initParam(&$objFormParam) { $objFormParam->addParam('親カテゴリID', 'parent_category_id', null, null, array()); $objFormParam->addParam('カテゴリID', 'category_id', null, null, array()); $objFormParam->addParam('カテゴリ名', 'category_name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); //追加 $objFormParam->addParam('説明', 'category_info', STEXT_LEN, 'KVa', array('SPTAB_CHECK')); $objFormParam->addParam('親カテゴリ説明のコピー', 'info_flg', INT_LEN, null, array()); }
public function updateCategory()関数を以下に書き換えます。
/** * カテゴリを更新する * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ public function updateCategory($category_id, $arrCategory) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->begin(); $where = 'category_id = ?'; //追記:親の設定を引き継ぐ時 if($arrCategory['info_flg']) { $parent_category_id = $objQuery->get("parent_category_id", "dtb_category", $where, array($category_id)); $arrCategory['category_info'] = $this->lfGetParentInfo($objQuery, $parent_category_id); } $objQuery->update('dtb_category', $arrCategory, $where, array($category_id)); $objQuery->commit(); }
ファイルの最後の}の前に関数を追加します。
// 追記:親のcategory_infoを取得する public function lfGetParentInfo($objQuery, $pid) { $where = "category_id = ?"; $parent_info = $objQuery->get("category_info", "dtb_category", $where, array($pid)); return $parent_info; }
3)カテゴリページで説明文を表示
ここが参考サイトと違うところです。
/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
以下を追加します。
/** * Page のAction. * * @return void */ function action() { parent::action(); /* 追加データを取得 */ $arrCtg = $this->lfGetCategoryData($this->mode, $this->arrSearchData['category_id']); $this->tpl_ctg_category_info = $arrCtg['category_info']; } /** * カテゴリデータの取得 * * @return str */ function lfGetCategoryData($mode, $category_id = 0){ if ($mode == 'search') { return array(); } elseif ($category_id == 0) { return array(); } else { $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = "category_id = ?"; $arrResult = $objQuery->select("*", "dtb_category", $where, array($category_id)); $arrCtg['category_info'] = $arrResult[0]['category_info']; return $arrCtg; } }
取得した説明文を表示する箇所を指定します。
/data/Smarty/templates/default/products/list.tpl
<!--{$tpl_ctg_category_info|nl2br_html}-->
以上で、無事説明が表示されるようになりました。
ゼヒトモ内でのプロフィール: ROCKSTREAM, ゼヒトモのホームページ作成・制作サービス, 仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス
2024/08/20
神社
御朱印
2024/07/06
神社
御朱印
2024/07/06
神社
御朱印
2024/02/09
神社
2024/02/09
神社