
最近、ECプラットフォーマ―の手数料高騰につき、自社ドメイン自社サイトでショップサイトの構築を希望される方が増えてきました。
EC-Cubeをショップサイトのコアエンジンに選ばれる方も多い中で、最新バージョンのEC-Cube4系で起きた問題です。
バリエーション管理
ヘッドライン
根本的な考え方というのはありますが、EC-Cubeの場合、カラーやサイズなどのバリエーションは【規格】という名前のグループを利用して成り立っています。
規格(バリエーション)は1つの商品で2つ選ぶことができる
例えば、サイズとカラーのような、縦軸と横軸になるであろう規格を2つまで選ぶことができ、それによって、カラー×サイズを選び、その色でそのサイズの商品を指定することができます。
楽天はバリエーションすべての価格が統一
楽天市場プラットフォームでは、カラーやサイズのバリエーションを作ることは容易にできますが、このバリエーションたちはすべて統一した価格で設定しなければいけません。
(在庫は各バリエーションごとに登録できますが)
なので、アパレルなどでよくある、大型サイズは価格が違うと言った場合に、なんとか価格を合わせこんで一緒にするか、別の商品ページを作らざるを得ないものになっています。
EC-Cubeの場合、規格は、商品ごとに作るのではなく、規格というグループを作り、その商品内でどの企画グループを組み合わせるかで、バリエーションを決めることができること、また、各バリエーションごとに、在庫数量や販売価格などを別々に決めることができます。
そう言ったことができることから、規格(バリエーション)システムについては、ちょっと手間はかかるけど、満足度の高い作りになっているなと感じていました。
が、問題が起きました。
規格グループについて
規格はいくつでも企画グループを作ることができます。
例えば、【サイズ】というグループを作り、そこにサイズ情報を、【カラー】という企画グループにはカラーを登録していくことで、様々なバリエーションを作ることができます
Ver.3まではひどかった
実はここにまず一つ目の問題がありました。
今までは規格名【サイズ】と付けたら、【サイズ】という企画グループはもう作れませんでした。
表示上、サイズというバリエーションとカラーというバリエーションから詳細を選択してもらいたいとした場合には、企画グループ名【サイズ】という欄にサイズを登録していかなければいけませんでした。
しかし、サイズと言っても、サイズの表記は様々です。【S/M/L】のようなサイズ情報であったり【9号/10号】のような号数のサイズ情報、【120㎝/130㎝】のようなcmでのサイズ情報、日本の表記では、【小/中/大】というったサイズ情報もありますね。
今回のこの商品はSML表記だから規格名:サイズにSMLを登録して…次の商品は号数表記だから規格名:サイズに、9号と10号を登録して。。。あ。過去に8号は登録してたな。。。
と言ったような一つの規格名内に複数の仕様のサイズ情報を入れていかなければいけません。
カラーも同様です。【赤/白】の漢字表記、【red/white】と言った英語表記【ブルー×ピンク】のようなマルチカラーの情報。。。etc…カラーはキリがないのに、規格名:カラーは一つしか作れないからその中に入れていくしかない。
結果、100種類ほどのサイズ表記と100種類ほどのカラー表記合計1万種類の中から今回の商品のサイズ3種類×カラー3種類の9種類を探し出す必要が出てきます。
商品を増やせば増やすほどこうなっていく可能性が出てきます。
Ver.4で改善!規格名がかぶっても大丈夫になった!
2019年5月時点で最新バージョンのVer.4で、これが改善されました。
規格名【カラー】というものを複数持たせることができるようになりました。
また、規格管理名という、サイト管理者だけが認識できる企画管理名が作れました。
なので、例えば規格名:カラー・規格管理名:A商品のカラバリや、規格名:サイズ・規格管理名:SML表記サイズ規格
と言ったようなことで、商品ごとの規格の作成や、表記方式毎のバリエーション規格と、小分けに作ることができるようになりました。
これで、1万件のリストから該当する9種類のバリエーションを探すような大きな手間が省けるようになりました。
が、大問題が…
規格名しか表示してくれないから、選べない。。。
よしそれなら。。。と、規格名:サイズを10種類、規格名:カラーを10種類作りました。
↑こんな感じで規格名はサイズ・カラーで、管理名として、各商品ジャンル(アパレルとか、靴とか)毎に分けるように企画グループを作りました。
そして、商品ページを作り規格1と規格2の規格選択画面に行くと。。。
規格1のリスト
サイズ
カラー
サイズ
カラー
サイズ
カラー
…以下終わるまで続く
↑こんな感じになるので、どのカラーが何の商品ジャンル用か全くわからないwww
なんということでしょう。。。
規格名だけを出力しているせいで、リストから何のカラー規格かわからないではないですか。。。
何のための管理名なのだか…
表示としては、規格名:カラーの横に、規格の管理名が表示されればどれが何のカラーバリエーション規格かわかるのでそれを出してほしいだけなんです。。。
EC-Cubeのコード体系が複雑すぎて笑えない
ショッピングカートシステムは、別にカートに商品を入れて、住所入れてドン!ってやると注文できるという単純なものではありません。
顧客の管理、商品の管理、色やサイズのバリエーションなど、様々な管理が必要になります。
もちろん、セキュリティも確保しなければいけません。
EC-Cubeは、それなりに完成度の高いカートシステムです。だからこそ、システムファイル数が膨大です。
数えたわけではありませんが楽に数十万ファイルあるんじゃないかと思います。
複雑とはいえ構造はしっかりロジカルに作られていた
Webでの描画のパートや、その中で表示するためのデータの呼び出しについては、商品の呼び出しや、顧客情報の呼び出しと言った情報グループ単位で処理が統一されたライブラリによって管理されており、もちろん今回の規格に関しての処理もいくつかのライブラリによって処理をまとめられていました。
答えを言うと、今回の表記の管理は、
src\Eccube\Entity\ClassName.php
こちらのファイルで管理されていました。
その中の、【__toString()】というユーザ定義関数の中の表記を調整することで必要な表示にすることができました。
これで、やっと、規格管理グループ名がわかるようになり、容易に規格を作っていくことができるようになりました。
ちょっとしたことですが、これがないと、安心して管理できないんですよね。。。