バージョン選択

フォーラム

メニュー

オンライン状況

71 人のユーザが現在オンラインです。 (58 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 71
もっと...

サイト内検索

機能要望 > その他 > 【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は下記のような感じ?
  

    function regist(SC_Helper_Plugin $objHelperPlugin) {
        // フックポイント[lc_page_admin_products_review_action_start]への追加
        $objHelperPlugin->addAction('lc_page_admin_products_review_action_start',array(インスタンス←どんなクラスでもOK?, 関数名), 優先度);
    }

的外れな質問になってるかもしれませんが、よろしくお願いします。


----------------
EC CUORE 株式会社クオーレ
カスタマイズ御相談下さい。

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]で下記処理を行うというイメージになりますでしょうか。
$this->tpl_mainpage = 'products/product_xxx.tpl';


■「御届け先の指定画面→(プラグインで追加される画面)→お支払方法画面」のように1画面丸ごと追加するプラグインのケースについて
こちらのイメージが少し掴めませんが、スーパーフックポイントを利用したりする感じでしょうか。
もしくは、お支払方法画面のフックポイントで追加画面に飛ばすようにするのでしょうか。


----------------
EC CUORE 株式会社クオーレ
カスタマイズ御相談下さい。

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つほど作成しようかと思ってます。
完成まで御付き合い頂けると幸いです。


----------------
EC CUORE 株式会社クオーレ
カスタマイズ御相談下さい。

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();


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,974名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.