EC-CUBE商品の登録項目内容の追加

水曜日, 7月 15th, 2009

こんにちは、なかわけです。

今日はEC-CUBEの話。

商品登録の際その項目内容を追加したいというテーマ。

例として今回はメーカーサイトURLのほかに「関連URL」を追加します。
長くなりそうなので簡潔にまとめます。

データベース(以下、DB)にカラムを追加する

dtb_productsに1カラム追加。
カラム名「comment7」
データ型「text」

商品詳細ページの編集

管理ページのデザイン管理>ページ詳細設定>商品詳細ページを開き、関連URLを表示したい部分に、

<!–{$arrProduct.comment7}–>

と記述する。関連URLがなければ表示しないようにするには、

<!–{$arrProduct.comment7|escape}–>

と記述する

商品登録ページの編集

data/Smarty/templates/default/admin/products/product.tplのファイルを開き、メーカーサイトの項目の下あたりに、

関連URL <span class="red12"><!--{$arrErr.comment7}--></span>

<input class="box60" maxlength="<!--{$smarty.const.URL_LEN}-->" name="comment7" size="60" type="text" value="<!--{$arrForm.comment7|escape}-->" /><span class="red"> (上限<!--{$smarty.const.URL_LEN}-->文字)</span>

を追加する。

Classファイルを変更する

data/class/pages/admin/products/LC_Page_Admin_Products_Product.phpをファイルを開き、393行目あたりのArrayに

comment7

を追加。さらに、400行目あたりのInsertデータを生成している個所でも、ほかの項目を参考に、

$sqlval['comment7'] = $arrList['comment7'];

を追加する。

vw_products_allclass_detailビューの定義を変更する

vw_products_allclass_detailテーブルの定義のQueryの中に、ほかの項目を参考に、

t3.comment7

を追加する。(しかし、なかわけの環境ではビューの変更ができなかったので、一度現在のビュー定義を削除して新しいビューを作ることで対応しました。削除するときはバックアップなどして慎重に作業してください。

ここまでの作業で、管理ページから追加項目を含めた商品の新規登録、編集を行うことができます。
参考:http://wiki.ec-orange2.jp/index.php?%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%EF%BC%9A%E5%BF%9C%E7%94%A8%2F%E5%95%86%E5%93%81%E5%B1%9E%E6%80%A7%E8%BF%BD%E5%8A%A0

以降の作業を行うことでcsvによる商品登録・編集をできるようにします。

商品登録CSVページの編集

data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.phpを開いて、227行目あたりのIfInitParam()に、ほかの項目を参考に、

$this->objFormParam->addParam(“関連URL”, “comment7″, URL_LEN, “KVa”, array(“SPTAB_CHECK”,”URL_CHECK”,”MAX_LENGTH_CHECK”));

を追加する。

ここでちょっとポイント。
管理ページ内の「商品管理」>「商品登録CSV」と、「コンテンツ管理」>「CSV出力項目設定」>「商品管理」と、クラスファイルのLC_Page_Admin_productd_UploadCSV.phpの項目順は同じにしておいたほうが無難です。思わぬエラーに悩まされる場合があります。

dtb_csvにレコードを追加する

no => (自動インクリメントされるようにする)
csv_id => 1
col => comment7
disp_name => 関連URL
rank => 59
status => 1
create_date => NOW()
update_date => NOW()

上記のような内容で、レコードをInsertしてください。カラムの説明を簡単にすると、
noはユニークなidとして扱われるもので、自動インクリメントされるようにしてください。
csv_idの1は商品管理、2は顧客管理、3は受注管理、4はキャンペーンを意味しています。
colは商品管理で使われているカラム名。今回の場合はcomment7。
disp_nameは日本語表示名。
rankはcsv出力したときに何個目の項目にするかという。ほかの項目とかぶってないほうが無難。
statusは1がcsv出力時に含む。2(1以外?)はcsv出力に含まない。
create_dateはレコードの作成日時。NOW()が無難。
update_dateは最終編集日。この場合NOW()が無難。

vw_product_classビューの定義を編集する

vw_product_classテーブルの定義のQueryの中に、ほかの項目を参考に、

t6.comment7

を追加する。(vw_products_allclass_detail同、なかわけの環境では変更ができなかったので、削除して定義しなおしました。)

ここまでの作業まででcsv管理までできるようになりました。

参考:http://drednote.blog92.fc2.com/blog-entry-51.html
参考:http://terarin.squares.net/2008/01/csv.html
参考:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=3590&forum=11&post_id=14199

簡潔にまとめるつもりがやっぱり長くなっちゃいました。

t6.comment7

Tags:

Comments are closed.