[EC-CUBE] 2.13 商品詳細ページのCSV 項目追加(MySQL)

[EC-CUBE] 2.13 商品詳細ページの項目追加(MySQL)

[EC-CUBE] 2.13 商品詳細ページの項目追加(MySQL)

商品ページに項目を増やすプラグインが既にあるのですが、他にどうしても利用したいプラグインとコンフリクトしてしまいました。また、CSVで出力・登録もできないと先々問題になりそうなので、データベースをいじってカスタマイズするのは初めてでしたが、まだ製作中のサイトという事もあり自分でやってみることにしました。素人なので、各部の名前(テーブル・カラム・レコード)の呼び方が間違っているかもしれません。

今回、商品詳細ページに追加した項目

目标 要完成 CSV 追加 2个项目

1 注意書き(管理画面で入力したテキストを表示) :注意提示,在管理页面 输入文本文档
2 プレゼント包装 可(管理画面でチェックボックスにチェックすると「プレゼント包装 可」と表示) 选择项,要不要选择礼物包装。

データベースの「dtb_products」に「comment7」「pre_flg」という名前のカラム追加 (数据库修改 追加 2个表 点 structure 底部 field(s) 追加上)

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

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

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

 

カスタマイズファイル 修改一下文件

/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
/data/class/SC_Product.php
/data/Smarty/templates/admin/products/product.tpl
/data/Smarty/templates/admin/products/confirm.tpl
/data/Smarty/templates/default/products/detail.tpl

/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php

(1)358行目辺り「//項目追加 カスタマイズ」のコメント文以降が追加コード

for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) {
    $objFormParam->addParam('詳細-サブタイトル' . $cnt, 'sub_title' . $cnt, STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
    $objFormParam->addParam('詳細-サブコメント' . $cnt, 'sub_comment' . $cnt, LLTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
    $objFormParam->addParam('save_sub_image' . $cnt, 'save_sub_image' . $cnt, '', '', array());
    $objFormParam->addParam('save_sub_large_image' . $cnt, 'save_sub_large_image' . $cnt, '', '', array());
    $objFormParam->addParam('temp_sub_image' . $cnt, 'temp_sub_image' . $cnt, '', '', array());
    $objFormParam->addParam('temp_sub_large_image' . $cnt, 'temp_sub_large_image' . $cnt, '', '', array());
   //項目追加 カスタマイズ
    $objFormParam->addParam('注意書き', 'comment7', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
    $objFormParam->addParam('プレゼント包装の可否', 'pre_flg', STEXT_LEN, 'n', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
}

プレゼント包装の可否の部分は、他の行を複製して利用ているので、この書き方は多分間違っています。
「kva」の部分を「n」に変更(必要かどうかは不明)。「array」の部分は空でOKかもしれませんが、とりあえずこのままでも大丈夫でした。

【文字列の変換】
K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換
C : 「全角ひら仮名」を「全角かた仮名」に変換
V : 濁点付きの文字を一文字に変換。”K”,”H”と共に使用します
n : 「全角」数字を「半角(ハンカク)」に変換

(2)1000行目付近「// 配列の添字を定義」の部分に追加

「//項目追加 カスタマイズ」のコメント文の下が追加している部分

 

// 配列の添字を定義
$checkArray = array('name', 'status',
                    'main_list_comment', 'main_comment',
                    'deliv_fee', 'comment1', 'comment2', 'comment3',
                    'comment4', 'comment5', 'comment6',
         //項目追加 カスタマイズ
                    'comment7', 'pre_flg',
                    'sale_limit', 'deliv_date_id', 'maker_id', 'note');
$arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray);

(3)1010行目付近「// INSERTする値を作成する。」の部分に追加

「//項目追加 カスタマイズ」のコメント文以降が追加コード

 // INSERTする値を作成する。
    $sqlval['name'] = $arrList['name'];
    $sqlval['status'] = $arrList['status'];
    $sqlval['main_list_comment'] = $arrList['main_list_comment'];
    $sqlval['main_comment'] = $arrList['main_comment'];
    $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['comment7'] = $arrList['comment7'];
    $sqlval['pre_flg'] = $arrList['pre_flg'];

 

/data/class/SC_Product.php

625行目辺り「商品詳細の SQL を取得する」に追加

,dtb_products.comment7
,dtb_products.pre_flg

/data/Smarty/templates/admin/products/product.tpl

商品登録ページに入力欄を追加します。
どこでも良いと思いますが、詳細コメントの下に追加しました。

<tr>
<th>注意書き<span class=”attention”> </span></th>
<td>
<span class=”attention”><!–{$arrErr.comment7}–></span>
<input type=”text” name=”comment7″ value=”<!–{$arrForm.comment7|h}–>” maxlength=”<!–{$smarty.const.STEXT_LEN}–>” style=”<!–{if $arrErr.comment7 != “”}–>background-color: <!–{$smarty.const.ERR_COLOR}–>;<!–{/if}–>” size=”60″ class=”box60″ />
<span class=”attention”> (上限<!–{$smarty.const.STEXT_LEN}–>文字)</span>
</td>
</tr>

<tr>
<th>プレゼント包装の可否<span class=”attention”> </span></th>
<td>
<span class=”attention”><!–{$arrErr.pre_flg}–></span>
<label><input type=”checkbox” name=”pre_flg” value=”1″ <!–{if $arrForm.pre_flg == 1}–>checked=”checked”<!–{/if}–> />プレゼント包装 可</label>
</td>
</tr>

/data/Smarty/templates/admin/products/confirm.tpl

確認ページにも追加します

<tr>
<th>注意書き</th>
<td><!–{$arrForm.comment7|h}–></td>
</tr>

<tr>
<th>プレゼント包装の可否</th>
<td>
<!–{if strlen($arrForm.pre_flg) >= 1}–><!–{$arrForm.pre_flg|h}–><!–{/if}–>
</td>
</tr>

/data/Smarty/templates/default/products/detail.tpl

最後に、商品詳細ページに表示させるためのコードを書いて完了です
(デザイン管理 → ページ詳細設定 → 商品詳細ページ)

<!–★注意書き★–>
<!–{$arrProduct.comment7|h}–>

<!–★代引きの可否★–>
<!–{if $arrProduct.pre_flg == 1}–>プレゼント包装 可<!–{/if}–>

※CSS省略

データベースを確認したところ、ちゃんと登録されている。

商品登録CSV(出力・登録)するためにデータベースに追加する

dtb_csvにレコードを2つ追加

phpMyAdminへのログイン
データベース名を選択
dtb_csvの行の「挿入」をクリック
下記のように値を入れて「実行」する

下記は、「comment7」を登録した例です。

    1. no:(登録データの最大値を捜して+1した数字)157登録されていたので「158」と入力
    2. csv_id:1
    3. col:comment7
    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...