読者です 読者をやめる 読者になる 読者になる

ただの技術者ぶろぐ

大阪に住んでる技術者が書く覚書ぶろぐ。

EC-CUBE3で遊ぼう1日目

EC-CUBE3 技術話

基本的な開発はEC-CUBE開発ドキュメントを見ながらになります。

EC-CUBE3.0.13以前バージョンでは、プラグイン作成用プラグインを使って開発するか一から手で作っていく必要がありましたが、現バージョン(3.0.13)以降はコマンド入力で作るのが手っ取り早いと思います。

プラグインジェネレータコマンド

php app/console plugin:develop generate
# (※あ、開発ドキュメントのtypoが直ってる。)

作成コマンドを入力する 入力する必要のある項目は以下の通り

------------------------------------------------------
---Plugin Generator
---[*]You can exit from Console Application, by typing quit instead of typing another word.
------------------------------------------------------

[+]Please enter Plugin Name
Input[1] : <<新規で作るプラグイン名>>

[+]Please enter Plugin Name (only pascal case letters numbers are allowed)
Input[2] : <<新規で作るプラグイン英名:先頭は大文字で英数字利用可>>

[+]Please enter version (correct format is x.y.z)
Input[3] : <<作成バージョン x=>メジャーバージョン、y=>マイナーバージョン、z=>ビルドバージョン>>

[+]Please enter author name or company
Input[4] :<<プラグイン作成者もしくは制作会社>>

[+]Do you want to support old versions too? [y/n]
Input[5] : <<旧バージョン(3.0.8以下)もサポートするかの判定>>

[+]Please enter site events(you can find documentation here http://www.ec-cube.net/plugin/)
Input[6] :<<共通イベント設定=>※複数設定可>>

[+]Please enter hook point, sample:front.cart.up.initialize
Input[7] :<<フロント、管理イベント設定=>※複数設定可>>

ただし、Windowsコマンドプロンプト環境などで実行しても、プラグイン名などに全角文字があると

  [Doctrine\DBAL\Exception\DriverException]
  An exception occurred while executing 'INSERT INTO dtb_plugin (name, code, class_name, plugin_enable, del_flg, version, source, create_date, update_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with
   params ["\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "PluginName", "", 0, 0, "1.0.0", 0, "2017-02-05 15:06:23", "2017-02-05 15:06:23"]:
  SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x00V\x00\x00v...' for column 'name' at row 1

という感じで文字コードエラーになってしまいますね。 これはコマンドプロンプトMySQL接続の場合の文字コード(CP932)関連でしょうか。Mac機では起きてないですね。

phpStormのコマンドラインツールからなら実行できたので、 多分間違いないでしょう。

 this files and folders were created.
 - C:\Eccube/app/Plugin/NewSample0001
 - C:\Eccube/app/Plugin/NewSample0001/ServiceProvider
 - C:\Eccube/app/Plugin/NewSample0001/Controller
 - C:\Eccube/app/Plugin/NewSample0001/Form/Type
 - C:\Eccube/app/Plugin/NewSample0001/Resource/template/admin
 - C:\Eccube/app/Plugin/NewSample0001/config.yml
 - C:\Eccube/app/Plugin/NewSample0001/PluginManager.php
 - C:\Eccube/app/Plugin/NewSample0001/ServiceProvider/NewSample0001ServiceProvider.php
 - C:\Eccube/app/Plugin/NewSample0001/Controller/ConfigController.php
 - C:\Eccube/app/Plugin/NewSample0001/Controller/NewSample0001Controller.php
 - C:\Eccube/app/Plugin/NewSample0001/Form/Type/NewSample0001ConfigType.php
 - C:\Eccube/app/Plugin/NewSample0001/Resource/template/admin/config.twig
 - C:\Eccube/app/Plugin/NewSample0001/Resource/template/index.twig
 - C:\Eccube/app/Plugin/NewSample0001/LICENSE

[+]Database
 Plugin information was added to table [DB.Plugin] (id=43)
Plugin was created successfully

正しく実行されたらこんな感じでプラグインディレクトリと中身が作られて、 f:id:rock-3:20170206170344j:plain

こんな感じで、EC-CUBE3の管理者画面に表示されます。 f:id:rock-3:20170206170333j:plain

一から作るとyamlで自爆したり、簡単な実装に凄い手間がかかってたんですけど、今の仕組みでは結構簡単に作れますね。 次回以降ではカスタマイズをいれてみます。

続きはまた今度。