ECCUBEで画像追加の最大数を10に増やす方法

ECサイトというものには様々ありまして、単なる食べ物販売とかなら、画像数も3枚もあれば十分ですが、カタログ販売サイトとなると、カタログの中身を載せる必要が出てくるので、5枚程度では足りません。

そういった場合を踏まえて、ひとまず10枚に増やしてみるというカスタマイズをご紹介します。

データベースにフィールドの追加

155

データベース操作は、phpMyAdminの場合で説明します。
アカウントにログイン>EC-CUBEのデータベース>上部メニューの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;

これでデータベースの方は操作終了です。

管理画面での操作とPHPファイルの修正

次に、管理画面で設定変更しましょう。
EC-CUBE管理画面>システム設定>パラメーター設定
PRODUCTSUB_MAX10にして更新。

続いてPHPファイルの修正。
data/class/SC_product.php
736行目辺りに以下を追加。
,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

ここまでやって、画像が表示されるようになります。もちろん、商品詳細ページのみですが。

画像が9枚目以降登録できない場合

これ、よくあるトラブルです。
どなた様もあるんじゃないでしょうか。

このトラブル、upload_max_filesizeの値が小さい場合、なってしまうそうです。
で、この値の変更はレンタルサーバーによってやり方が変わってきますので、調べて変更しましょう。

ちなみに、僕はサクラレンタルサーバーロリポップレンタルサーバーの両方変更経験があるわけで。
サクラサーバー:php.iniに max_file_uploads = 100 を追加
ロリポップ:ユーザー専用ページよりPHP設定から 20Mに変更

上記のやり方で双方とも10枚表示できるようになりました。
やり方はあってるかわかりませんが、登録できないときにはご参考下さい。

カスタマイズの後処理二つ

商品一覧ページにも10件の画像を表示したいので、PHPファイルを修正。
/data/class_extends/SC_Product_Ex.php
70行目付近に以下を追加。
,sub_title6
,sub_image6
,sub_large_image6
,sub_title7
,sub_image7
,sub_large_image7
,sub_title8
,sub_image8
,sub_large_image8
,sub_title9
,sub_image9
,sub_large_image9
,sub_title10
,sub_image10
,sub_large_image10

これで商品一覧ページにも10件の画像が表示されるようになります。

スマートフォンでは、画像数が増えたことにより、設定している横幅が足りなくなるため、10枚目以降が表示されなくなります。
というわけで、CSSの修正して表示されるようにします。
html/user_data/packages/sphone/css/products.css
344行目付近を以下に変更
#detailphotoblock div.moveWrap>ul.move {
width:2000px;
↓
width:4000px;

これでやっと完成となります。

総括

久しぶりにデータベースをいじったわけですが、こうしてSQL文を流し込むだけで追加可能というのはいいですね。
失敗が無いので危険性が多少は下がるのではないでしょうか。

他には画像が9枚目以降が登録できないトラブルも、なんとなく対処方が分かっていれば大丈夫かな、と。
いざという時は、サーバー会社に問い合わせるのが良いでしょう。

こんなところで完成したわけですが、この画像数を活かして、画像をページめくりのように見られる機能を次回、探したうえで紹介しようと思っています。
いちいち、拡大画面解除している場合ではないですからね。
無駄クリックを減らす努力というのはいいものです。

というわけで、以上となりました。

7 Comments

  1. ご教授下さい!

    EC-CUBEの商品登録でつまずいております。
    是非、お助け頂ければと思います。



    同一サーバ上にある別のECシステムから、EC-CUBEにデータをコンバートしたいと思っております。


    アパレルものなので、1商品に対して
    色、サイズ、在庫数
    の規格があります。
    画像は、1商品あたり、最大30枚まであります。


    どのテーブルのどのカラムにデータを流し込めば、正常に登録できるのでしょうか?


    是非、ご教授頂ければ幸いです。


    よろしくお願い致します。

    • お返事が遅くなりました。
      いつもご覧いただき、ありがとうございます。

      規格などを利用してデータを登録する場合ですが、一度手動で登録したのち、その情報をCSVでダウンロードしたうえで、データの新規登録をするのが一番簡単だと思います。

      ただし、画像数はカスタマイズによって追加できる画像数を変更してからでないと、30枚は登録できません。

      慣れれば簡単なので、まずはCSVによる商品の新規登録方法を学んでください。

  2. 何度もすみません。
    上記画像登録は行えたのですが
    商品詳細のサムネイルに
    登録した画像が出てきません。

    data/class/SC_product.phpに
    下記に
    /*
    * point_rate, deliv_fee は商品規格(dtb_products_class)ごとに保持しているが,
    * 商品(dtb_products)ごとの設定なので MAX のみを取得する.
    */
    $sql = <<< __EOS__
    (
    SELECT
    dtb_products.product_id
    ,dtb_products.name
    ,dtb_products.maker_id
    ,dtb_products.status
    ,dtb_products.comment1
    ,dtb_products.comment2
    ,dtb_products.comment3
    ,dtb_products.comment4
    ,dtb_products.comment5
    ,dtb_products.comment6
    ,dtb_products.note
    ,dtb_products.main_list_comment
    ,dtb_products.main_list_image
    ,dtb_products.main_comment
    ,dtb_products.main_image
    ,dtb_products.main_large_image
    ,dtb_products.sub_title1
    ,dtb_products.sub_comment1
    ,dtb_products.sub_image1
    ,dtb_products.sub_large_image1
    ,dtb_products.sub_title2
    ,dtb_products.sub_comment2
    ,dtb_products.sub_image2
    ,dtb_products.sub_large_image2
    ,dtb_products.sub_title3
    ,dtb_products.sub_comment3
    ,dtb_products.sub_image3
    ,dtb_products.sub_large_image3
    ,dtb_products.sub_title4
    ,dtb_products.sub_comment4
    ,dtb_products.sub_image4
    ,dtb_products.sub_large_image4
    ,dtb_products.sub_title5
    ,dtb_products.sub_comment5
    ,dtb_products.sub_image5
    ,dtb_products.sub_large_image5
    ,dtb_products.sub_title6
    ,dtb_products.sub_comment6
    ,dtb_products.sub_image6
    ,dtb_products.sub_large_image6
    ,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←追加
    ,dtb_products.del_flg
    ,dtb_products.creator_id
    ,dtb_products.create_date
    ,dtb_products.update_date
    ,dtb_products.deliv_date_id

    して、もちろんデータベースにも
    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;
    を追加しました。

    まだ何か足りない手順があるのでしょうか?
    ちなみに、詳細画像6までならサムネイルに表示されております。

    バージョンが2.12.1だからタグ等が少し違うのでしょうか?

    すみませんがご教授いただければと思います。

    宜しく御願い致します。

    • いつもご覧頂き、ありがとうございます。

      質問にありましたが、こちらの方でも原因が特定できません。

      管理画面のPRODUCTSUB_MAXぐらいしか、あとは思いつきませんが、いかがでしょうか。

  3. いつも拝見させていただいております。

    ありがとうございます。

    自分は2.12.1でロリポップを使用しているのですが

    どうしても、画像の9以降が登録出来ず、

    商品詳細画面でも6個しかサブ画像が登録出来ずに困っております。

    上記手順は踏んでいると思うのですが

    何が原因であるかが分かりません。

    宜しければご教授いただければと思います。

    • いつもご覧になって下すってありがとうございます。
      9枚目以降が登録できないという事ですが、僕自身もどうして登録できるようになったか、詳しくわかってない部分があります。

      ただ、登録が可能になったのは、やはりロリポップでのユーザー専用ページをいじった結果、そうなったのでして。
      ですので、以下を参考に、もう少しいじってみてはいかがでしょうか。

      設定するドメイン ********
      phpのバージョン 5.3
      ■ mbstring 関連 [ 公式マニュアル ]
      設定項目 設定内容
      mbstring.language neutral
      mbstring.internal_encoding 未設定
      mbstring.encoding_translation Off
      mbstring.func_overload 0
      mbstring.http_input pass
      mbstring.http_output pass
      ■ session 関連 [ 公式マニュアル ]
      設定項目 設定内容
      session.auto_start 0
      session.use_trans_sid 0
      session.use_only_cookies  0
      ■ apc 関連 [ 公式マニュアル ]
      設定項目 設定内容
      apc.enabled 0
      apc.enable_cli 0
      ■ xdebug 関連 [ 公式マニュアル ]
      設定項目 設定内容
      xdebugを利用可能にする Off
      ■ そのほか
      設定項目 設定内容
      default_charset 未設定
      output_handler 未設定
      output_buffering 未設定
      magic_quotes_gpc Off
      short_open_tag On
      safe_mode Off
      register_globals Off
      allow_url_fopen     On
      allow_url_include   Off
      「 allow_url_fopen 」 が 「 On 」 の場合のみ設定可能です

      upload_max_filesize  20M
      「 post_max_size 」 も同時に変更します

      display_errors On
      error_reporting  E_ALL&~E_NOTICE&~E_DEPRECATED
      asp_tags Off
      variables_order EGPCS
      「 EGPCS 」 を任意で並び替えて入力してください

      auto_prepend_file 空欄
      「 任意のファイルパス 」 を入力してください

      php_value, php_flagを利用可能にする Off
      この設定が「 On 」の場合 .htaccess の設定内容が優先されます

      という具合です。
      このphp.ini設定画面ですが、以前からいまいち設定が上手くいかなかったりします。
      操作の手順がれっきとしてあるようなわけです。

      なので、そこも確かめながら、もう一度変更を試みて下さい。

      • phpのバージョンが5.2だった為のようです!
        解決しました。ありがとうございます!
        これからも宜しく御願い致します。

2 Trackbacks / Pingbacks

  1. EC-CUBEセットアップ | SARAROID
  2. 【ECCUBE】登録商品画像を10点にしたい | 44uta.com

Leave a Reply

Your email address will not be published.


*