【EC-CUBE】簡単なカテゴリ説明文章をカテゴリ登録CSV で一括登録 2.13

【EC-CUBE】簡単なカテゴリ説明文章をCSVで一括登録 2.13

【EC-CUBE】簡単なカテゴリ説明文章をCSVで一括登録 2.13 EC-CUBEでカテゴリページに説明文を追加する方法

カテゴリ別MV(メインビジュアル)枠追加プラグイン (2.13系)機能の機能が簡単なカテゴリ説明文章が一括登録できないので、簡単なカテゴリ説明文章をCSVで一括登録できるように改造させます。

環境は以下の通り。

  • EC-CUBE 2.13.1
  • PHP 5.4.35
  • MySQL 5.5.38

実装は自己責任で。商品一覧ページのカテゴリごとに異なる説明文()を表示するMV枠を追加します。

EC-CUBEでカテゴリページに説明文を追加する方法 手順 カテゴリ登録CSV で一括登録 2.13

1.データベースにカラムを2つ追加
2.管理画面から追加・編集できるようにする
3.カテゴリページで説明文を表示

データベースにカラムを2つ追加

まずはdtb_categoryテーブルに以下のカラムを追加します。

カラム名: category_info データ型: text
カラム名: info_flg データ型: smallint

それぞれ「ヌル(NULL)」に「null」を設定し保存します。

1 phpMyAdminにログイン

  1. データベース名を選択
  2. dtb_productsの行の「構造」をクリック
  3. 構造画面に移動したら画面を下までスクロール
  4. 「指定のカラムの後に」をチェックして、任意のカラムを選択(今回はcomment6の後に追加)
  5. 左の「×個のフィールドを追加する」に、任意の数を入力(今回は2)
  6. 「実行する」をクリック

空のフィールドが2行表示されるので、項目・種別・ヌルの項目を設定

追加したい項目名「comment7」を入力
種別を選択で(TEXT)を選択。
ヌル(NULL)の項目を「null」を選択して設定
下の「保存する」をクリック
2行目「pre_flg」もすべて1行目と同じでOKでした。(種別も(TEXT)でOKでした。)

まず、データベースのdtb_category

  1. カラム名: category_info データ型: text ヌル(NULL):はい デフォルト値: NULL
  2. カラム名: 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」を登録した例です。

    1. no:(登録データの最大値を捜して+1した数字)157登録されていたので「158」と入力
    2. csv_id:5
    3. col:category_info
    4. disp_name:カテゴリ説明
    5. rank:(商品登録CSVデータの表示順)管理ページで確認すると「71」項目あるので「72」から登録
    6. update_date:カレンダーから今日の日付を選択

 

「LC_Page_Admin_productd_UploadCSV.php」の修正

参考ページには「LC_Page_Admin_productd_UploadCSV.php」にも追加が必要とありますが、2.13.1では、カスタマイズ不要でした。

 

 

 

eccubeorg

http://www.eccube.org

You may also like...