初心者必見!とりあえずざっくりとEC-CUBE3カスタマイズ

NK9V9A9153_TP_V

こんにちは。MEGANE MANです。

最近EC-CUBE3をガッツリカスタマイズする機会がありまして。
色々と悩みまくったので、今回はそのノウハウをまとめようかと思います。

注意!:今回は学習にかけられるコストが皆無だったので、ほぼバッドノウハウです!
最良の選択するには時間と知識がかけられませんでした・・・!
「ちゃんと勉強して正しくやりたい!」っていう方は、参考になさいませんよう・・・

そもそも何が辛いか

PAK85_lalamaittawai20140321_TP_V

EC-CUBE3は、EC-CUBE2に比べて、公開からまだそんなに時間が経ってません。

なので、↓のような状態です。
・ドキュメントがない(公式のドキュメントも貧弱・・・)
・ググっても情報が出ない
→ 頑張って探しても2向けの内容しか出ない・・・
・2から大幅に変わってる(っていうか別物)なので、ソースを見てもサッパリわからん
・やや玄人向けな記事が多い。初心者向けのノウハウがない
・非プログラマ向けの運用ドキュメントがない
→ 受託の場合は、お客様向けに自分でドキュメント作らないと辛い
・プラグインが少ない
→ 有料は割とそろってきてるようですが、無料は基本のものしかなさそう・・・

まぁちゃんとしっかり知識があって、読むものをしっかり読めば開発できるんですが・・・
そうはいっても、受託で制作してる場合、納期との兼ね合いなんかもあるので、しっかりできない時もありますよね。

でもとりあえずやってみる

とはいえ男にはやらねばならない時があります。
持てる技を駆使して、(半ば強引に)やってみましょう。

 

必要な知識

まず、EC-CUBE3を読み解くには、以下の知識があるといいっぽい

・Symfony2
・doctrine
・Silex
・MVC型のフレームワークの知識

ドキュメント

カスタマイズを始めるにあたって参考にしたページ。
まずはここから読んでいきましょう

EC-CUBE開発ドキュメント
Qiita

 

 

1. インストールについて

インストール方法については飛ばしますが、一点だけ詰まったので。
ちなみに基本的なインストール方法は「最新版「EC-CUBE3」のインストール手順とエラー回避」あたりを読んでください。

/html/ を消す方法

今回はここでつまづきました。
やり方が2系と全然違う感じでした。

一番いいのは、ドキュメントルートを/html/のところにしちゃえばいいんですが、レンタルサーバだとそれもできませんね。

htaccessを使ってやる方法が一番よさそうでしたので、下記をご紹介します。

レンタルサーバでEC-CUBE3のURLにhtmlを付けさせない方法

2. ディレクトリ構成をざっくり知ろう

全部は見てませんがので、とりあえず必要になりそうな基本的なところだけ。

・html/template
テーマ毎の css ファイルなどが入ります。
独自のテーマのサイトを作りたい場合はここに独自テーマのディクトリを置きます
(独自テーマの作り方は、EC-CUBE3のデザインを変更したときにやった事まとめという記事がいい感じでした!)

・html/user_data
管理画面から、ブロックを追加すると、ここにtwigのファイルができます。
FTPで直接いじることもできます。(いいのかどうかはわかりませんが・・・)

・app/config
DB情報やらパスの情報やらが格納されてます。
手動でいじってもOKっぽいけど、なにかしらのタイミングで上書きされることもあるから注意!

・app/template
各テーマ用のtwigファイルが置いてあります。
独自のテーマを作りたい場合は、ここに独自テーマのディレクトリを置きます。

・src/Eccube/
ここにEC-CUBEのプログラム群が格納されています。
システムをガツガツ変更する人はここをひたすらいじるとできます
本来、システムの拡張はプラグインでやるのがベターですが、
学習コストがあがるので、今回は直接いじってしまいました。
これだとアップデートができないので、時間がある方はプラグインを勉強してみてね!

・src/Eccube/Controller
各ページ用のControllerが格納されています。
新しいページを追加したときに、独自の動きをさせたければここで色々します。

・src/Eccube/ControllerProvider
「このページはここのControllerを使って!」っていう指示が書いてあります。
ルーティングですね。

・src/Eccube/Entity
テーブルを追加したり、テーブルに新しいカラムを追加したいときはここをいじります。
Masterもあるので、追加した時にはここをいじるはず・・・だけど、具体的な追加方法がどこにもなくて断念しました・・・
別途migrate(後述)をしないと、DBの方は変更されないので注意

・src/Eccube/Form/Type
フォームの設定をするファイルです。
「お問合せフォームに項目追加したい!」とかはここ。
各フォーム毎に buildForm っていうメソッドがあるので、
symfony2の記法に乗っ取りながらそこを触ります。

・src/Eccube/Resource/doctrine
テーブルを追加したり、テーブルに新しいカラムを追加したいときはここもいじります。
– yml に追加したいカラムを記述
– migrateファイルを設定(後述)
くらいのことをします。

 

多分、いじるのはこのくらいでOK!
このくらい覚えておけば、あとは力技でどうにかできますw

 

3. migration について

EC-CUBE3でDBにカラムを追加するには、migration を行う必要があります。
これをやるには console コマンドというのを使います。

console コマンドは、以下のようなことができるようです。

・プラグインを新しく作る
・migration 用のファイルを生成/実行
・多分他にもいろいろできる

今回は、「migration 用のファイルを生成/実行」だけやってみたので、こちらをご紹介!

 

まず、console の使いかたですが、

$ php [consoleへのパス] [コマンド]

のような感じで、ターミナルから実行できます。
※対話式もあるっぽいけど、わかんないっす

 

実際にmigationしてみる

手順は以下の通り

  1. コンソールで↓を実行
    php app/console migrations:generate
  2. src/Eccube/Resource/doctrine/migration 以下に、実行した時間が入ったファイルが生成されるので、それをいじる
    ※商品テーブルに hoge というディレクトリを追加したかったら
    up っていうメソッドの中に
    $table = $schema->getTable(‘dtb_product’);
    $table->addColumn(‘hoge’, ‘text’, array(‘NotNull’ => false));みたいな感じ。
  3. php app/console migrations:migrate を実行

これだけでOK!
あとはよしなに Entity とかいじるだけ。

 

終わりに

EC-CUBEに限らず、オープンソースを使う機会って結構ありますが、
慣れてないとカスタマイズするのって大変ですよね。

皆様の開発の一助になれればと思います。

 

Follow me!

  • Facebook
  • twitter
  • Hatena