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, ゼヒトモのホームページ作成・制作サービス, 仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス
2025/01/31
JQuery
2025/01/01
神社
御朱印
相模原
2024/10/27
ブラウザ
カスタム投稿
Wordpress
2024/08/20
神社
御朱印
2024/07/06
神社
御朱印