More Related Content
Similar to Ec cube開発合宿 プラグインセミナー
Similar to Ec cube開発合宿 プラグインセミナー (20)
Ec cube開発合宿 プラグインセミナー
- 2. 機能の全体像
EC-CUBE本体処理への介入して処理・結果を
EC-CUBE本体処理への介入して処理・結果を書き
本体処理への介入して処理
える、
換える、乗っ取る。
フックポイント機能
→ プラグイン フックポイント機能
EC-CUBE本体テンプレートに対して出力内容を
EC-CUBE本体テンプレートに対して出力内容を加
本体テンプレートに 出力内容
える、 える。
える、変える。
テンプレートの変更機能
→ テンプレートの変更機能
EC-CUBE本体の内部データをJavaScript等
EC-CUBE本体の内部データをJavaScript等から
本体 データをJavaScript
安全・定型的な 動的に
安全・定型的な形で動的に取り出したり、外部シ したり、
ステムと通信し連携する。
API機能
→ API機能
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 2
- 3. 機能のメリット
EC-CUBE本体機能への直接改修を くし、分離。
EC-CUBE本体機能への直接改修を無くし、分離。
本体機能への直接改修
EC-CUBEはECのコア機能に注力。
のコア機能
EC-CUBEはECのコア機能に注力。
派生機能はプラグイン APIで実装。
はプラグイン&
派生機能はプラグイン&APIで実装。
統一化された仕組みにより管理性向上
統一化された仕組みにより管理性向上
された仕組みにより
セキュリティ
プログラムの見通
見通しをよくする
プログラムの見通しをよくする
再利用性
WordPressやMagentoみたいな山
WordPressやMagentoみたいな山ほどプラグインが
みたいな
ある将来将来をイメージ
ある将来をイメージ
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 3
- 4. プラグイン フックポイント
ページの生成前(action前
ページの生成前(action前) 、ページの生成後(action後)
生成前(action ページの生成後 action後
生成後(
ページの処理途中での移動(reloadや Redirect前
処理途中での移動(reload
ページの処理途中での移動(reloadや、Redirect前)
プラグインの処理
処理が されます。
に、プラグインの処理が呼び出されます。
プラグインは、介入したいポイントをセットする
したいポイントをセットする。
1. プラグインは、介入したいポイントをセットする。
フックポイント通過時にプラグイン側関数
通過時にプラグイン側関数が される。
2. フックポイント通過時にプラグイン側関数が呼び出される。
3. プラグイン側は好き勝手に処理を変える。
プラグイン側 勝手に処理を える。
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 4
- 5. フックポイントで出来る事
何でも出来る
でも出来る
出来
極端な
極端な話
商品一覧ページ
商品一覧ページ → 会員登録ページに置き換え
会員登録ページに
ページに置
なんてことも出来る
なんてことも出来る。
出来
実例
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 5
- 8. API機能
1.画一化されたRESTインターフェースにて呼
1.画一化されたRESTインターフェースにて呼び出される。
画一化されたRESTインターフェースにて される。
/html/api/xml.php?Service=Core&Operation=BrowseNodeLookup&BrowseNodeId=2
/html/api/json.php?Service=Core&Operation=GetVersion
/html/api/php.php?Service=Core&Operation= AddrFromZip&zip1=111&zip2=222
2.処理実体は データの取
2.処理実体は、データの取り出し・設定部分を定義するだけ。
処理実体 し・設定部分を定義するだけ。
設定部分 するだけ
生産性の向上。安全性の向上。管理等が容易に
生産性の向上。安全性の向上。管理等が容易に。
(郵便番号取り出しで約10行程度のコーディング)
3.決められたセキュリティの枠組みチェック後 実行される。
3.決められたセキュリティの枠組みチェック後に実行される。
枠組みチェック される
リファラーチェック・トークン・署名認証
リファラーチェック・トークン・署名認証
会員認証・管理者認証・ログインセッション・管理者セッション
・ログインセッション・管理者
会員認証・管理者認証・ログインセッション・管理者セッション
IP認証・ホスト認証 SSL認証
認証・ホスト認証・ 認証・ 完全オープン
オープン)
IP認証・ホスト認証・SSL認証・(完全オープン)
4.プラグインにより、APIのオペレーションを拡張可能。
4.プラグインにより、APIのオペレーションを拡張可能。
プラグインにより のオペレーションを拡張可能
data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置
data/downloads/api/ ディレクトリに拡張オペレーションファイルを設置。
api 拡張オペレーションファイルを設置。
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 8
- 9. APIで出来る事
1.他システムとのデータ連携
システムとのデータ連携
他のサイト・システムから呼び出された内容に応じて処理実装。
のサイト・システムから呼 された内容に じて処理実装。
内容 処理実装
会員データ連携。
会員データ連携。
データ連携
2.Ajax
各種画面をajax化して、画面遷移を わない動的 Webアプリに
動的な
各種画面をajax化して、画面遷移を伴わない動的なWebアプリに
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 9
- 10. プラグイン&APIで出来る事
たとえば・・・
1.商品一覧をajax化する。
商品一覧をajax化する。
・フックポイントで一覧処理
一覧処理を
・フックポイントで一覧処理を乗っ取る。
・トランスフォームでajax のフォーム、javascriptのロード
ajax用
・トランスフォームでajax用のフォーム、javascriptのロード
API経由
経由で ajaxが処理取得。
・API経由で、ajaxが処理取得。
2.他システムとの会員データ連携
システムとの会員データ連携
会員データ
・フックポイントで会員登録 変更時に外部システムにデータ
会員登録・ システムにデータ送信
・フックポイントで会員登録・変更時に外部システムにデータ送信
・トランスフォームで会員情報項目 変更・追加。
会員情報項目の
・トランスフォームで会員情報項目の変更・追加。
・APIで、外部システムからの会員認証を実行して結果通知。
APIで 外部システムからの会員認証を実行して結果通知。
システムからの会員認証 して結果通知
3.管理画面の拡張
管理画面の
・トランスフォームで、管理画面メニューに項目追加。
メニューに項目追加
・トランスフォームで、管理画面メニューに項目追加。
・フックポイントで必要 設定項目を既存画面に追加。
必要な
・フックポイントで必要な設定項目を既存画面に追加。
・プラグインの追加機能
追加機能で しい管理画面 複数生成。
管理画面を
・プラグインの追加機能で、新しい管理画面を複数生成。
プラグイン設定画面でも可能です
プラグイン設定画面でも可能です。
設定画面でも可能です。
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 10
- 11. 実装のポイント
1.プラグイン
a.フックポイントを めて、定義する
フックポイントを決 する。
a.フックポイントを決めて、定義する。
b.install/uninstall/enable/disable処理
b.install/uninstall/enable/disable処理
/uninstall/enable/disable
ブロック追加 プラグイン独自設定 テーブル追加
追加、 独自設定、
ブロック追加、プラグイン独自設定、テーブル追加・改変 追加・
API用ファイルの複製 画像ファイルなどのコピー
API用ファイルの複製、画像ファイルなどのコピー
複製、
c.フックポイントでのコールバック処理を実装する。
c.フックポイントでのコールバック処理を実装する。
フックポイントでのコールバック処理 する
関数の引数に びだし元 Pageオブジェクトを操作。
オブジェクトを操作
関数の引数に来る呼びだし元のPageオブジェクトを操作。
出力用データはオブジェクト変数として格納されている
データはオブジェクト変数として格納されている。
出力用データはオブジェクト変数として格納されている。
$objPage->tpl_title や $objPage->arrForm
objPage- objPage- 等
Pageオブジェクト内のローカル関数も必要ならば実行。
Pageオブジェクト内のローカル関数も必要ならば実行。
オブジェクト 関数 ならば実行
$objPage->lfInitParam($objFormParam);
objPage- lfInitParam($objFormParam
($objFormParam);
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 11
- 12. 実装のポイント
2.トランスフォーム
a.トランスフォームのフックポイント
トランスフォームのフックポイント定義
a.トランスフォームのフックポイント定義
b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。
b.既存のSmartyテンプレートの名前確認・加工ポイントを決める。
既存 テンプレートの名前確認 ポイントを
c.トランスフォーム処理の
c.トランスフォーム処理の実装
トランスフォーム処理
JqueryライクなDOM操作 可能です
ライクなDOM操作が です。
JqueryライクなDOM操作が可能です。
$objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'snip_products_list_add.tpl'));
objTransform->select('h2.title')- insertBefore(file_get_contents($
($template_dir 'snip_products_list_add.tpl
snip_products_list_add.tpl'));
objTransform->select('div.now_dir')- replaceElement(file_get_contents($
div.now_dir') ($template_dir
$objTransform->select('div.now_dir')->replaceElement(file_get_contents($template_dir .
snip.admin_basis_category_add.tpl'));
'snip.admin_basis_category_add.tpl'));
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 12
- 13. 実装のポイント
3.API
a.オペレーション
オペレーション名 決定と
a.オペレーション名の決定と、セキュリティ・パラメーターなどの
定義。
定義。
b.実装。
b.実装。
実装
c.呼
c.呼び出し側の実装。
実装。
サンプル呼 しテスト用プログラムあります。
サンプル呼び出しテスト用プログラムあります。
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 13
- 14. 何を作ろう
・OpenGraphメタタグ出力プラグイン
OpenGraphメタタグ出力プラグイン
メタタグ出力
SEO用メタタグ設定 出力プラグイン
設定&
・SEO用メタタグ設定&出力プラグイン
Analyticsタグ設置プラグイン
タグ設置
・Google Analyticsタグ設置プラグイン
開発コミュニティへの質問内容作成プラグイン
コミュニティへの質問内容作成
・開発コミュニティへの質問内容作成プラグイン
・祝祭日自動取得&反映プラグイン
祝祭日自動取得&反映プラグイン
・かごの中ページに自動遷移
自動遷移しないプラグイン
・かごの中ページに自動遷移しないプラグイン
商品一覧の 方法の追加プラグイン
・商品一覧の並び替え方法の追加プラグイン
会員登録項目に会社名を
・会員登録項目に会社名を足すプラグイン
会員登録項目の必須項目を非必須化するプラグイン
・会員登録項目の必須項目を非必須化するプラグイン
・購入ステップをスキップするプラグイン
購入ステップをスキップするプラグイン
・ランキングブロックプラグイン
・アンケートフォームプラグイン
・のしオプションプラグイン
規格選択フラット
フラット化
・規格選択フラット化プラグイン
・かごの中商品 関連商品をまとめて表示するプラグイン
中商品の をまとめて表示
・かごの中商品の関連商品をまとめて表示するプラグイン
・かごの中ページのAjax
Ajax化
・かごの中ページのAjax化プラグイン
・その他既存機能 Ajax化
他既存機能の
・その他既存機能のAjax化
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 14
- 15. 質疑応答
kawaguchi@spiritof.jp
https://www.facebook.com/ayumu.kawaguchi
Copyright (c) 2012 Spirit of Co.,Ltd. all rights reserved. 15