[EC-CUBE カスタマイズ日誌] 第 5 回 商品のサブ画像の数を増やしたい!

No Photo

そろそろ iPhone にしようかと思ってる kimoto です。
そうなると家の無線 LAN を強化しないとな…。

さて、好評連載中の EC-CUBE カスタマイズ日誌ですが、今回で 5 回目です。
本日は、商品のサブ画像の登録数を増やす tips をご紹介します。

まずは設定変更

まずは、管理画面から 1 商品当たりのサブ画像数を変更します。
「基本情報管理」→「パラメータ設定」の「PRODUCTSUB_MAX」(商品サブ情報最大数)に、登録したい画像数を入力します。

しかし、このままでは増やせません。

DB が対応していないからです。テーブルに手を加える必要があります。
ここでは、PotsgreSQL、MySQL それぞれの場合でどのように変更を加える必要があるかを書いていきます。

PostgreSQL の場合

まずは「dtb_productsテーブルに必要なだけカラムを追加します。

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;

その後、view の再生成を行います。EC-CUBE インストールディレクトリの install/sql/create_view.sql を適宜変更して実行します。

CREATE VIEW vw_products_allclass_detail AS
    SELECT product_id,
           price01_min,
           price01_max,
           price02_min,
           price02_max,
           stock_min,
           stock_max,
           stock_unlimited_min,
           stock_unlimited_max,
           del_flg,
           status,
           name,
           comment1,
           comment2,
           comment3,
           deliv_fee,
           main_comment,
           main_image,
           main_large_image,
           sub_title1,        // ↓ここから下
           sub_comment1,
           sub_image1,
           sub_large_image1,
           sub_title2,
           sub_comment2,
           sub_image2,
           sub_large_image2,
           sub_title3,
           sub_comment3,
           sub_image3,
           sub_large_image3,
           sub_title4,
           sub_comment4,
           sub_image4,
           sub_large_image4,
           sub_title5,
           sub_comment5,
           sub_image5,
           sub_large_image5,
           ......

実行は以下。

psql -U postgres -h localhost DB_NAME < ECCUBE_DIR/install/sql/create_view.sql

MySQL の場合

MySQL の場合は、view は使用しておりませんので、view の再生成は行わない代わりに、プログラムに手を入れる必要がでてきます。
まずは PostgreSQL と同じく、「dtb_productsテーブルに必要なだけカラムを追加します。

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;

プログラムを修正します。修正するファイルはdata/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php です。275 行目付近の viewToSubQuery() というメソッドを編集します。

function viewToSubQuery() {

       .........

       "vw_products_nonclass" => '
           (SELECT
               T1.product_id,
               T1.name,
               T1.deliv_fee,
               T1.sale_limit,
               T1.sale_unlimited,
               T1.category_id,
               T1.rank,
               T1.status,
               T1.product_flag,
               T1.point_rate,
               T1.comment1,
               T1.comment2,
               T1.comment3,
               T1.comment4,
               T1.comment5,
               T1.comment6,
               T1.file1,
               T1.file2,
               T1.file3,
               T1.file4,
               T1.file5,
               T1.file6,
               T1.main_list_comment,
               T1.main_list_image,
               T1.main_comment,
               T1.main_image,
               T1.main_sub_image,
               T1.main_large_image,
               T1.sub_title1,          // ↓ここから下
               T1.sub_comment1,
               T1.sub_image1,
               T1.sub_large_image1,
               T1.sub_title2,
               T1.sub_comment2,
               T1.sub_image2,
               T1.sub_large_image2,
               T1.sub_title3,
               T1.sub_comment3,
               T1.sub_image3,
               T1.sub_large_image3,

               .........


       "vw_products_allclass_detail" => '
           (SELECT product_id,price01_min,price01_max,price02_min,price02_max,stock_min,stock_max,stock_unlimited_min,stock_unlimited_max,
           del_flg,status,name,comment1,comment2,comment3,deliv_fee,
           main_comment,main_list_comment,main_image,main_sub_image,main_large_image,
           sub_title1,sub_comment1,sub_image1,sub_large_image1,          // ↓ここから下
           sub_title2,sub_comment2,sub_image2,sub_large_image2,
           sub_title3,sub_comment3,sub_image3,sub_large_image3,
           sub_title4,sub_comment4,sub_image4,sub_large_image4,
           sub_title5,sub_comment5,sub_image5,sub_large_image5,
           sub_title6,sub_comment6,sub_image6,sub_large_image6,
           sub_title7,sub_comment7,sub_image7,sub_large_image7,
           sub_title8,sub_comment8,sub_image8,sub_large_image8,
           sub_title9,sub_comment9,sub_image9,sub_large_image9,
           sub_title10,sub_comment10,sub_image10,sub_large_image10,
           sub_title11,sub_comment11,sub_image11,sub_large_image11,

           ..........

以上です。

サブ画像を増やしたい、という事例は結構多いのではないかと思います。
その時に参考となれば幸いです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ