機能要望 > その他 > 【EC-CUBE2.12】プラグイン機能 |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
eccube_admin |
投稿日時: 2012/1/12 15:26
対応状況: −−−
|
管理人 登録日: 2006/9/6 居住地: 投稿: 157 |
【EC-CUBE2.12】プラグイン機能 お世話になっております。
EC-CUBE開発チームです。 EC-CUBE2.12.0alpha版開発にて、 プラグイン機能を実装しております。 まずはエンジン部分の実装をコミット致しましたので、ご報告致します。 ご確認頂けると幸いです。 ▼チケット http://svn.ec-cube.net/open_trac/ticket/1603 ▼チェンジセット http://svn.ec-cube.net/open_trac/changeset/21395 機能仕様についても随時公開して参りますので、 今後ともよろしくお願い致します。 |
ECCUORE |
投稿日時: 2012/3/7 17:20
対応状況: −−−
|
長老 登録日: 2009/10/22 居住地: 東京 投稿: 248 |
Re: 【EC-CUBE2.12】プラグイン機能 プラグインチケットにあるサンプルプラグインをインストールて利用しました。
プラグイン機能についての基本的な質問をさせて頂ければと思います。 1:プラグインで出来る事の限界について 具体的には、現状のサンプルプラグインがBloc形式のプラグインなので、プラグインでどの程度まで実装できるかがわかると プラグイン化するものと、しないものの判断がしやすいかと思いますので、現状で構いませんので教えて頂けますでしょうか。 例えば、下記パターンのプラグインは可能でしょうか? ・管理画面の商品情報に1項目を追加するプラグイン ・「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグイン 2:フックポイントの指定について addActionを呼び出さない限り、arrRegistedPluginActionsにフックポイントの登録が出来ないと考えてよろしいでしょうか。 その場合は、registSuperHookPointではaddActionを呼んでおりますが、registLocalHookPointでは呼んでおりません。 プラグインのregist関数でaddActionを呼ぶようなイメージになりますでしょうか。 例えば、「[lc_page_admin_products_review_action_start]フックポイントで挙動するプラグイン」のregistは下記のような感じ?
的外れな質問になってるかもしれませんが、よろしくお願いします。
|
yoshimoto |
投稿日時: 2012/3/7 19:00
対応状況: −−−
|
EC-CUBE開発チーム 登録日: 2012/1/13 居住地: 投稿: 16 |
Re: 【EC-CUBE2.12】プラグイン機能 お世話になっております。
株式会社ロックオンの吉本です。 ご質問にお答えさせて頂きます! > 例えば、下記パターンのプラグインは可能でしょうか? > ・管理画面の商品情報に1項目を追加するプラグイン > ・「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグイン はい!どちらも可能となっております。 > addActionを呼び出さない限り、arrRegistedPluginActionsにフックポイントの登録が出来ないと考えてよろしいでしょうか。 はい。そういった仕様となっております。 フックポイント毎にaddActionで登録する事になります。 > その場合は、registSuperHookPointではaddActionを呼んでおりますが、registLocalHookPointでは呼んでおりません。 > プラグインのregist関数でaddActionを呼ぶようなイメージになりますでしょうか。 regist関数をプラグイン側に宣言して頂き、そこでフックポイントを登録します。 サンプルで書いて頂いているソースで問題ありません。 プラグインエンジンは日々修正を加えており、α版リリースのタイミングで改めて仕様に関してはご説明させて頂きます。 サンプルプラグインもご指摘にあります様に現状のサンプルプラグインでは不明点が多いかと思います。 またフィードバックなど頂ければと思います! 以上、よろしくお願いいたします。 |
ECCUORE |
投稿日時: 2012/3/7 20:14
対応状況: −−−
|
長老 登録日: 2009/10/22 居住地: 東京 投稿: 248 |
Re: 【EC-CUBE2.12】プラグイン機能 回答ありがとうございます、大まかなイメージが合っていて良かったです。
再び質問させて頂きます。 > > 例えば、下記パターンのプラグインは可能でしょうか? > > ・管理画面の商品情報に1項目を追加するプラグイン > > ・「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグイン >はい!どちらも可能となっております。 ■「管理画面の商品情報に1項目を追加するプラグイン」ケースについて こちらは、product_xxx.tplなどをプラグインファイル群に入れておき、フックポイント[lc_page_admin_products_product_action_start]か [lc_page_admin_products_product_action_end]で下記処理を行うというイメージになりますでしょうか。
■「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグインのケースについて こちらのイメージが少し掴めませんが、スーパーフックポイントを利用したりする感じでしょうか。 もしくは、お支払方法画面のフックポイントで追加画面に飛ばすようにするのでしょうか。
|
yoshimoto |
投稿日時: 2012/3/8 9:20
対応状況: −−−
|
EC-CUBE開発チーム 登録日: 2012/1/13 居住地: 投稿: 16 |
Re: 【EC-CUBE2.12】プラグイン機能 お世話になっております。株式会社ロックオン吉本です。
お答えさせて頂きます。 > ■「管理画面の商品情報に1項目を追加するプラグイン」ケースについて こちらはテンプレートへのトランスフォームとフックポイントの2機能を使う事になります。 項目の追加はテンプレートのトランスフォームを使います。 下記の流れでSmartyは処理しますが、そのコンパイルファイル作成前にテンプレートのソースに干渉出来る様になっています。 テンプレート→コンパイル→変数に値の割り当て→出力 他のフックポイントと同様にコンパイル前に処理を追加できるフックポイントをaddActionをします。 この場合、prefilterTransformというフックポイントになります。 $objHelperPlugin->addAction('prefilterTransform', array(&$this, 'prefilterTransform'), 1); こうしておくとSmartyのコンパイル時にセットしたコールバック関数prefilterTransformが実行されます。 prefilterTransformにはテンプレートのソースが渡るので SC_Helper_Transformというインターフェイスを使ってソースを好きに整形→コンパイルファイル作成 (SC_Helper_Transformの使い方は仕様書を作成しますのでもうしばらくお待ちください) という流れになります。 追加した項目への処理はPageクラスのフックポイントで行います。 (メンバ変数にセットして出力など…) > ■「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグインのケースについて やり方いくつかあるかと思いますが、お支払方法画面のフックポイントで追加画面に飛ばす事になるのかと思います。 まだまだ見えてない点が多くありますので、実際に実現出来ない・問題があればα版で修正していきたいと思います。 よろしくお願いいたします。 |
ECCUORE |
投稿日時: 2012/3/8 11:58
対応状況: −−−
|
長老 登録日: 2009/10/22 居住地: 東京 投稿: 248 |
Re: 【EC-CUBE2.12】プラグイン機能 2パターン(「1項目追加する」、「1画面追加する」)での処理の流れは概ね理解いたしました。
<私の理解した処理イメージ> _smarty register_prefilter に Smartyフックポイントprefilter_transformを登録 ↓ view prefilter_transform で フックポイントprefilter_transformの関数を実行(objPageインスタンスの) SC_Helper_Transformについては、もう少し詳細を追ってみます。 「1項目追加する」プラグインと、「1画面追加する」プラグインの動作確認用に2つほど作成しようかと思ってます。 完成まで御付き合い頂けると幸いです。
|
yoshimoto |
投稿日時: 2012/3/8 15:58
対応状況: −−−
|
EC-CUBE開発チーム 登録日: 2012/1/13 居住地: 投稿: 16 |
Re: 【EC-CUBE2.12】プラグイン機能 はい!
そちらの認識で問題ありません。 α版をリリースさせて頂きましたのでご確認よろしくお願いいたします! http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=10155&forum=14&post_id=48550#forumpost48550 改めて仕様とサンプルを載せておりますので、また不明点など御座いましたらご連絡頂ければと思います。 よろしくお願いいたします。 |
nanasess |
投稿日時: 2012/3/9 9:34
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【EC-CUBE2.12】プラグイン機能 細かいところですが...
* regist という英単語はありませんので, register に修正した方が良いと思います. http://labs.cybozu.co.jp/blog/akky/archives/2005/07/regist.html * プラグインのライセンスはどうなるのでしょうか? GPL or LGPL でしょうか? Apache ライセンスなど, GPL に矛盾しないOSSライセンスでしたら頒布可能でしょうか? |
seasoft |
投稿日時: 2012/3/18 14:22
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 【EC-CUBE2.12】プラグイン機能 下記2通りの呼び出しが混在しているようですが、どういった違いでしょうか?
SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); SC_Helper_Plugin_Ex::getSingletonInstance();
|
yoshimoto |
投稿日時: 2012/3/21 20:33
対応状況: −−−
|
EC-CUBE開発チーム 登録日: 2012/1/13 居住地: 投稿: 16 |
Re: 【EC-CUBE2.12】プラグイン機能 お世話になっております。
株式会社ロックオン吉本です。 nanasess様 > * regist という英単語はありませんので, register に修正した方が良いと思います. > http://labs.cybozu.co.jp/blog/akky/archives/2005/07/regist.html ご指摘ありがとうございます。 こちら対応させて頂きます。 seasoft様 > 下記2通りの呼び出しが混在しているようですが、どういった違いでしょうか? > SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); > SC_Helper_Plugin_Ex::getSingletonInstance(); $this->plugin_activate_flgはプラグイン有効なプラグインを呼び出すかの判定フラグとなっています。 判定が必要な箇所には引数で渡す様にしています。 (例えばプラグイン管理ではプラグインが動作しない仕様になっています。) 判定が不要なクラスに関しては省略しています。 (デフォルト値がtrueなので) |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |