EC-CUBEは株式会社ロックオンの商標です

EC-CUBE3をカスタマイズしようと思ったら・・・

納期が約1週間と短いECサイトの案件が入ったので、EC-CUBEでチャッチャと作ってしまおうと考えました。
カスタマイズが必要な箇所もありましたが、デフォルトでレスポンシブ対応できているEC-CUBE3を使ってみようと思いましたが今回はちょっとやめにした話です。

 

発表していた2017年7月から延期し、当面の間、バージョンアップ対応を含む公式サポートを継続していくことを発表していますので、現時点(2017/5/7)ではEC-CUBE2で構築することも選択肢のひとつだと思います。
※2017/5/7追記

 

EC-CUBE3はEC-CUBE2とはプログラム的には全く異なるものです。
SilexというSymfony2ベースのフレームワークを使って構築されています。
マイクロフレームワークということで、Symfony2より学習コストが低いところがオススメポイントのようです。

また、EC-CUBE3では本体のアップデート機能も搭載しているため、本体は変更することなくプラグインでカスタマイズしていくのは基本的な考え方の様子です。
しかし、本体のクラスを継承してカスタマイズしてけば親のクラスが上書きされても問題ないわけで、プラグインじゃなきゃダメというわけでもなさそうですね。

EC-CUBE3の中身を少し覗いて見ただけで、EC-CUBE2であればphpに詳しい技術者がいないWeb制作会社であってもなんとかカスタマイズ可能であったものが、一気に敷居が高くなったことはひと目で分かります。
今回の案件では商品詳細画面に入力項目を追加する必要があり、そのフォーム周りでEC-CUBE3に3時間使った時点で納期に間に合わないと判断し、EC-CUBE2に切り替えました。

EC-CUBE3で右往左往しながらやったのは、フォームのisValid()を通そうとしただけのことです。
テンプレートに項目を追加しただけではカート追加時のフォームのisValid()が通らず、AddCartTypeを継承したフォームタイプを作れば良いのだろうかと思ったけれど何を書いたら項目が追加されたことになるのかが良く分かりません。
継承元のクラスを参考に、FormBuilderInterfaceのクラスにaddしてはみました。
が、新しいクラスのphpファイルをどうやってフレームワークに認識させれば良いのでしょうか。
オートロードという仕組みがある様子で、継承元と同じディレクトリに置いておけば読み込んでくれるのかと思いきや、フレームワークはいつまでたってもそんなクラスは知らない模様。
オートロードを構成しているphpファイルはいくつかありますが、その中のautoload_classmap.phpというファイルを覗いてみると・・・どうやら全部のクラスがここに記載されているようです。
オートロードちゃうやん・・・composerで管理されているファイルのみオートロードされます。

結局、どこに置いたらロードされるか分からなかったので、乱暴にも新しいクラスも末尾に追加すると読み込まれました。
が、相変わらずisValidは通らず。
EccubeServiceProvider.phpに継承元のクラスを追加する記載があったので真似して記載してみたけれど通らず。

方向転換してプラグインのお作法を学びながら作っても時間がかかりそうで、この時点で短納期では無理とあきらめました。
最初につまづいたisValid()が通らないまま終了です。

後からhttp://ec-cube.github.io/tutorial-5.htmlの記載を見つけましたが、多分コントローラーの変更あたりが抜けているんだろうなぁと思いました。
わからないけれど。
また、このページではオートロードを直接変更はしていない(当たり前)ようなので、composerで読み込ませているのだろうけれど、それ以外でロードされる場所があるのかは不明。
プラグインとして実装するのが王道なのだろうと思いますが、そちらも結局学習コストが必要です。

このページを見ると、フォームを追加してバリデーションするだけで比較的盛りだくさんな気がします。
バリデーションの種類の説明に至っては「Symfony2のサイトで確認してください。」となっており、やっぱりSymfony2の知識は必要不可欠なのだろうと感じました。

 

インターネットでEC-CUBE3について書かれた様々な情報を読みましたが、まだまだ情報が不足している印象です。。
また、決済関連のプラグインの不足も不安材料です。
今のところ、公式サイトでは6社しか掲載されていません。
公式サイトにはありませんが、「ペイデザイン」「アイピーロジック」などが決済関連のプラグインを提供していますが、もう少し選択肢がないと中小零細企業には提案しにくい感じがします。(EC-CUBE2では公式サイトで25社のプラグインが提供されていました。)

 

Symfony2自体と比較すればSilexの学習コストは低いのだろうと思いますが、それはSymfony2と比較した相対的なもので、Silexもそれなりの学習コストは必要ですね。
いまEC-CUBE3のカスタマイズをやっていくなら、Symfony2やSilexについての基礎を勉強してからなんだろうなと思います。

2017/04/25追記:
親切そうな公式開発ドキュメントページが開設されていますね。(http://doc.ec-cube.net/
プラグインについてもチュートリアルなど、詳しい説明があります。
私がここでやりたかったことも、このあたりで実現できるのかもしれません。

2017/6/8追記:EC-CUBE以外の選択肢もご検討のあなたは、こちらもどうぞ。

ECサイト構築のトレンド

楽天市場

Amazon.co.jpアソシエイト

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)