【EC-CUBE】簡単なカテゴリ説明文章をカテゴリ登録CSV で一括登録 2.13
【EC-CUBE】簡単なカテゴリ説明文章をCSVで一括登録 2.13
【EC-CUBE】簡単なカテゴリ説明文章をCSVで一括登録 2.13 EC-CUBEでカテゴリページに説明文を追加する方法
カテゴリ別MV(メインビジュアル)枠追加プラグイン (2.13系)機能の機能が簡単なカテゴリ説明文章が一括登録できないので、簡単なカテゴリ説明文章をCSVで一括登録できるように改造させます。
環境は以下の通り。
実装は自己責任で。商品一覧ページのカテゴリごとに異なる説明文()を表示するMV枠を追加します。
EC-CUBEでカテゴリページに説明文を追加する方法 手順 カテゴリ登録CSV で一括登録 2.13
1.データベースにカラムを2つ追加 2.管理画面から追加・編集できるようにする 3.カテゴリページで説明文を表示
データベースにカラムを2つ追加
まずはdtb_categoryテーブルに以下のカラムを追加します。
カラム名: category_info データ型: text カラム名: info_flg データ型: smallint
それぞれ「ヌル(NULL)」に「null」を設定し保存します。
1 phpMyAdminにログイン
- データベース名を選択
- dtb_productsの行の「構造」をクリック
- 構造画面に移動したら画面を下までスクロール
- 「指定のカラムの後に」をチェックして、任意のカラムを選択(今回はcomment6の後に追加)
- 左の「×個のフィールドを追加する」に、任意の数を入力(今回は2)
- 「実行する」をクリック
空のフィールドが2行表示されるので、項目・種別・ヌルの項目を設定
追加したい項目名「comment7」を入力 種別を選択で(TEXT)を選択。 ヌル(NULL)の項目を「null」を選択して設定 下の「保存する」をクリック 2行目「pre_flg」もすべて1行目と同じでOKでした。(種別も(TEXT)でOKでした。)
まず、データベースのdtb_categoryに
- カラム名: category_info データ型: text ヌル(NULL):はい デフォルト値: NULL
- カラム名: info_flg データ型: smallint ヌル(NULL):はい デフォルト値: NULL
2 管理画面から追加・編集できるようにする
カテゴリ編集ページにテキストフィールドを追加します。
2.1 /data/Smarty/templates/admin/products/category.tpl
59行目付近の<div class=“now_dir”>の直下に下記コードを追加します。
<!-- カテゴリ説明文--> <div> <textarea name="category_info" cols="110" rows="15"><!--{$arrForm.category_info|escape}--></textarea><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>
2.2 /data/class/pages/admin/products/LC_Page_Admin_Products_Category.php
408行目付近のpublic function initParam()関数の中に下記コードを追加します。
$objFormParam->addParam('カテゴリ説明', 'category_info', LLTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('カテゴリ説明flg', 'info_flg', INT_LEN, null, array());
447行目付近のpublic function updateCategory()関数を以下に書き換えます。
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 カテゴリページで説明文を表示
次に表示ロジックをカスタマイズします。
3.1 data/class/pages/products/LC_Page_Products_List.php
189行目付近のpublic function lfGetCategoryId()の最後に以下を追記します
// 追加:カテゴリ説明 $objQuery = new SC_Query(); $this->category_info = $objQuery->get(“category_info”, “dtb_category”, “category_id = ?”, $arrCategory_id);
return $arrCategory_id[0];
3.2 /data/Smarty/templates/default/products/list.tpl
取得した説明文を表示する箇所を指定します。これは好きなところに入れて大丈夫です。
<!--{$category_info}-->
カテゴリ登録CSV(出力・登録)するためにデータベースに追加する
dtb_csvにレコードを追加
phpMyAdminへのログイン データベース名を選択 dtb_csvの行の「挿入」をクリック 下記のように値を入れて「実行」する
下記は、「category_info」を登録した例です。
「LC_Page_Admin_productd_UploadCSV.php」の修正
参考ページには「LC_Page_Admin_productd_UploadCSV.php」にも追加が必要とありますが、2.13.1では、カスタマイズ不要でした。