タカサンのブログ -8ページ目

タカサンのブログ

日常やWEB関係の覚書等

EC-CUBEのカスタマイズを行う時、困るのが、バージョンの違いで


検索して調べた手順と異なる場合が有る事です。


今回、EC-CUBE2.12.2 データベースPostgreSQL 9.2.3 の環境で、商品のサブ画像を増やしてみました。


EC-CUBEはデフォルトで利用出来るサブ画像は、5までです。


それを、10まで増やしてみます。


まずは、「基本情報管理」→「パラメータ設定」の「PRODUCTSUB_MAX」(商品サブ情報最大数)に、


登録したい画像数を入力します(ここでは10を入力)。


次に、サブ画像を記録している「dtb_products」テーブルにカラムを追加します。


phpPgAdminなどを使い、次のSQL文を実行します。


ALTER TABLE dtb_products ADD COLUMN sub_title7 text;
ALTER TABLE dtb_products ADD COLUMN sub_comment7 text;
ALTER TABLE dtb_products ADD COLUMN sub_image7 text;
ALTER TABLE dtb_products ADD COLUMN sub_large_image7 text;
ALTER TABLE dtb_products ADD COLUMN sub_title8 text;
ALTER TABLE dtb_products ADD COLUMN sub_comment8 text;
ALTER TABLE dtb_products ADD COLUMN sub_image8 text;
ALTER TABLE dtb_products ADD COLUMN sub_large_image8 text;
ALTER TABLE dtb_products ADD COLUMN sub_title9 text;
ALTER TABLE dtb_products ADD COLUMN sub_comment9 text;
ALTER TABLE dtb_products ADD COLUMN sub_image9 text;
ALTER TABLE dtb_products ADD COLUMN sub_large_image9 text;
ALTER TABLE dtb_products ADD COLUMN sub_title10 text;
ALTER TABLE dtb_products ADD COLUMN sub_comment10 text;
ALTER TABLE dtb_products ADD COLUMN sub_image10 text;
ALTER TABLE dtb_products ADD COLUMN sub_large_image10 text;


ここで、「何故7からなの?」と思われる方がいらっしゃるかもしれませんが


最初から、6までは作られているので、7から10までのカラムを追加しています。


1つだけ増やしたい場合は、PRODUCTSUB_MAXを6にするだけで、カラムを増やす必要は有りません。


今回の環境では、「view の再生成」の必要はありませんでした。


次に、html/install/sql/create_table_pgsql.sqlの


CREATE TABLE dtb_products (
product_id int NOT NULL,
name text NOT NULL,
maker_id int,
status smallint NOT NULL DEFAULT 2,
comment1 text,
comment2 text,
comment3 text,
comment4 text,
comment5 text,
comment6 text,
note text,
main_list_comment text,
main_list_image text,
main_comment text,
main_image text,
main_large_image text,
sub_title1 text,
sub_comment1 text,
sub_image1 text,
sub_large_image1 text,
sub_title2 text,
sub_comment2 text,
sub_image2 text,
sub_large_image2 text,
sub_title3 text,
sub_comment3 text,
sub_image3 text,
sub_large_image3 text,
sub_title4 text,
sub_comment4 text,
sub_image4 text,
sub_large_image4 text,
sub_title5 text,
sub_comment5 text,
sub_image5 text,
sub_large_image5 text,
sub_title6 text,
sub_comment6 text,
sub_image6 text,
sub_large_image6 text,


の後ろに、


sub_title7 text,
sub_comment7 text,
sub_image7 text,
sub_large_image7 text,
sub_title8 text,
sub_comment8 text,
sub_image8 text,
sub_large_image8 text,
sub_title9 text,
sub_comment9 text,
sub_image9 text,
sub_large_image9 text,
sub_title10 text,
sub_comment10 text,
sub_image10 text,
sub_large_image10 text,


を追加します。


そして、data/class/SC_Product.phpの


650行目付近にある、 ,dtb_products.sub_large_image6 と ,dtb_products.del_flg の間に


,dtb_products.sub_title7
,dtb_products.sub_comment7
,dtb_products.sub_image7
,dtb_products.sub_large_image7
,dtb_products.sub_title8
,dtb_products.sub_comment8
,dtb_products.sub_image8
,dtb_products.sub_large_image8
,dtb_products.sub_title9
,dtb_products.sub_comment9
,dtb_products.sub_image9
,dtb_products.sub_large_image9
,dtb_products.sub_title10
,dtb_products.sub_comment10
,dtb_products.sub_image10
,dtb_products.sub_large_image10


を追加します。


これで、サブ画像6~10までの登録が出来るのですが、正常にアップロードできない場合は


memory_limit :スクリプトが確保できる最大メモリをバイト数
post_max_size :POSTデータに許可される最大サイズ
upload_max_filesize :アップロードされるファイルの最大サイズ


の数値を上げてみます。


まずは、.htaccess の 「php_value upload_max_filesize」「php_value post_max_size」


の数値を上げて試してみて、ダメなら、php.ini の 「memory_limit」「post_max_size」「upload_max_filesize」 


を上げてみてください。(システム設定>システム情報 で数値を要確認)


ここまでのカスタマイズで、アップロードした6~10の詳細-サブタイトル、詳細-サブコメント


、詳細-サブ画像、詳細-サブ拡大画像 が、テンプレートで利用出来るようになります。



商品登録CSVにも今回のカスタマイズを反映させる場合は


dtb_csvテーブル に、今回増やした分カラムを追加します。


ただ、増やすだけでは、「商品管理>商品登録CSV」で表示した時に、42項目:詳細-サブ拡大画像(5)

の次に 39項目:詳細-サブタイトル(6) と、綺麗に表示されません。


まずは、phpPgAdminなどでdtb_csvテーブルを開き、csv_id が1のデータのrankを確認します。


特にカスタマイズしていなければ、csv_id が1のrank42は詳細-サブ拡大画像(5)になっていると


思います。


「商品管理>商品登録CSV」の画面は、rankの順番で表示されるので


現在登録されているcsv_id が1のrank43以降のrankの値を、43→63 と20ずつ足してやります。


デフォルトでは、最後、カテゴリ名が71なので、すべて足した後のカテゴリ名のrankは91となります。


終わったら、全てのカラム数を確認します。(デフォルトでは153でした。)


そしてSQL文を実行しカラムを追加します。


insert into dtb_csv(no,csv_id,col,disp_name,rank,rw_flg,status,create_date,update_date,mb_convert_kana_option,size_const_type,error_check_types) values
(154,1,'sub_title6','詳細-サブタイトル(6)',43,1,1,now(),now(),'KVa','STEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(155,1,'sub_comment6','詳細-サブコメント(6)',44,1,1,now(),now(),'KVa','LLTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(156,1,'sub_image6','詳細-サブ画像(6)',45,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS'),
(157,1,'sub_large_image6','詳細-サブ拡大画像(6)',46,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS');
(158,1,'sub_title7','詳細-サブタイトル(7)',47,1,1,now(),now(),'KVa','STEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(159,1,'sub_comment7','詳細-サブコメント(6)',48,1,1,now(),now(),'KVa','LLTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(160,1,'sub_image7','詳細-サブ画像(6)',49,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS'),
(161,1,'sub_large_image7','詳細-サブ拡大画像(6)',50,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS');
(162,1,'sub_title8','詳細-サブタイトル(6)',51,1,1,now(),now(),'KVa','STEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(163,1,'sub_comment8','詳細-サブコメント(6)',52,1,1,now(),now(),'KVa','LLTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(164,1,'sub_image8','詳細-サブ画像(6)',53,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS'),
(165,1,'sub_large_image8','詳細-サブ拡大画像(6)',54,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS');
(166,1,'sub_title9','詳細-サブタイトル(6)',55,1,1,now(),now(),'KVa','STEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(167,1,'sub_comment9','詳細-サブコメント(6)',56,1,1,now(),now(),'KVa','LLTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(168,1,'sub_image9','詳細-サブ画像(6)',57,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS'),
(169,1,'sub_large_image9','詳細-サブ拡大画像(6)',58,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS');
(170,1,'sub_title10','詳細-サブタイトル(6)',59,1,1,now(),now(),'KVa','STEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(171,1,'sub_comment10','詳細-サブコメント(6)',60,1,1,now(),now(),'KVa','LLTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK'),
(172,1,'sub_image10','詳細-サブ画像(6)',61,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS'),
(173,1,'sub_large_image10','詳細-サブ拡大画像(6)',62,1,1,now(),now(),,'LTEXT_LEN','SPTAB_CHECK,MAX_LENGTH_CHECK,FILE_EXISTS');


noが153の続きで154から始まり、rankが42の続き43から始まっているのがお分かり頂けると思います。


EC-CUBEは、noの値を参照していないので、これで、通常の利用は問題なく動作すると思います。