【EC-CUBE3】商品登録CSVの項目をプラグイン無しで変更する
EC-CUBE3で、商品登録 CSVのファイルフォーマットを、
プラグインを使わずに修正するためのメモです。
ファイルの場所:
/src/Eccube/Controller/Admin/Product/CsvImportController.php
1126行目:
下記の情報を、必要に合わせて変更したり追記したりすればオッケーです。
private function getProductCsvHeader()
{
return array(
'商品ID' => 'id',
'公開ステータス(ID)' => 'status',
'商品名' => 'name',
'ショップ用メモ欄' => 'note',
'商品説明(一覧)' => 'description_list',
'商品説明(詳細)' => 'description_detail',
'検索ワード' => 'search_word',
'フリーエリア' => 'free_area',
'商品削除フラグ' => 'product_del_flg',
'商品画像' => 'product_image',
'商品カテゴリ(ID)' => 'product_category',
'タグ(ID)' => 'product_tag',
'商品種別(ID)' => 'product_type',
'規格分類1(ID)' => 'class_category1',
'規格分類2(ID)' => 'class_category2',
'発送日目安(ID)' => 'deliveryFee',
'商品コード' => 'product_code',
'在庫数' => 'stock',
'在庫数無制限フラグ' => 'stock_unlimited',
'販売制限数' => 'sale_limit',
'通常価格' => 'price01',
'販売価格' => 'price02',
'送料' => 'delivery_fee',
'商品規格削除フラグ' => 'product_class_del_flg',
);
}
/src/Eccube/Controller/Admin/Product/CsvImportController.php
1126行目:
下記の情報を、必要に合わせて変更したり追記したりすればオッケーです。
private function getProductCsvHeader()
{
return array(
'商品ID' => 'id',
'公開ステータス(ID)' => 'status',
'商品名' => 'name',
'ショップ用メモ欄' => 'note',
'商品説明(一覧)' => 'description_list',
'商品説明(詳細)' => 'description_detail',
'検索ワード' => 'search_word',
'フリーエリア' => 'free_area',
'商品削除フラグ' => 'product_del_flg',
'商品画像' => 'product_image',
'商品カテゴリ(ID)' => 'product_category',
'タグ(ID)' => 'product_tag',
'商品種別(ID)' => 'product_type',
'規格分類1(ID)' => 'class_category1',
'規格分類2(ID)' => 'class_category2',
'発送日目安(ID)' => 'deliveryFee',
'商品コード' => 'product_code',
'在庫数' => 'stock',
'在庫数無制限フラグ' => 'stock_unlimited',
'販売制限数' => 'sale_limit',
'通常価格' => 'price01',
'販売価格' => 'price02',
'送料' => 'delivery_fee',
'商品規格削除フラグ' => 'product_class_del_flg',
);
}
なお、「商品ID」を「ProductID」に変更する場合などは、CsvImportController.php内にハードコーディングされている箇所を、必要に応じて修正します。
例えば、$row["商品ID"]と書かれてある部分を、$row["ProductID"]に一括置換すればおkです。
ちなみに、ECCubeで元々無かった項目を追加する場合は、これとは別に、項目追加用のコードを記述する必要があります。
例えば、あらかじめ、src/Eccube/Entity/Product.phpにて、
private $product_name;
public function getProductName(){return $this->product_name;}
public function setProductName($product_name){$this->product_name = $product_name; return $this;}
public function getProductName(){return $this->product_name;}
public function setProductName($product_name){$this->product_name = $product_name; return $this;}
のような形で、setProductName()メソッドを追加しておいたと仮定しましょう。
その場合は、CsvImportController.phpの133行目あたりに、下記のようなコードを追加します。
$vars = array(
"製品名" => "setProductName",
);
foreach($vars as $key => $value){
if($row[$key] != ""){
$Product->$value(Str::trimAll($row[$key]));
}
}
※getProductCsvHeader()のarray()内に、"製品名" => 'product_name'のような記述を追加しておく必要があります。
"製品名" => "setProductName",
);
foreach($vars as $key => $value){
if($row[$key] != ""){
$Product->$value(Str::trimAll($row[$key]));
}
}
※getProductCsvHeader()のarray()内に、"製品名" => 'product_name'のような記述を追加しておく必要があります。
上記を実行すると、CSVのデータに製品名が入力されてある場合に、$Product->setProductName(trim($row[$key]))が実行されます。
この記事の最終更新日:2018/02/21
最初に記事を書いた日:2018/02/16
この記事をシェアする
関連記事
- ・【ECCube3】「メルマガを受け取る」のチェックボックスを作る方法
- ・【ECCube3】お届け日の最大日数を設定する
- ・【ECCube3】AmazonPayで、お届け日調整プラグインが機能しない時の対策
- ・【ECCube3】クロネコとGMOペイメントで、受注編集画面のGMO決済ボタンがエラーになる件
- ・【ECCube3】管理画面のログをちゃんとソートする方法
- ・【EC-Cube3】Amazonペイメントとクロネコペイメントの組み合わせで受注編集画面のエラーが出る件
- ・【ECCube3】EC-Cubeでキーワード検索を高速化する方法
- ・【EC-Cube3】商品詳細ページに在庫数を表示したり、計算できるようにする
- ・【EC-Cube3】トップページに新着情報を自動表示する
- ・【EC-CUBE3】商品詳細ページだけH1タグの値を変える方法