2011-12-19 10 views
2

オーチャード・CMSにとって非常に新しく、私は最初のモジュールの作成を開始しました。私は自分のモジュールがルートWebサイトから初期化されたが、運がなかったことを検出する方法を探していました!オーチャード・モジュール・ローディング・イベント

WebActivatorとPreApplicationStartMethod属性を使用して、起動時に呼び出されるメソッドを設定することを提案しましたが、これは機能しませんでした。

誰かがこれを達成するために管理しましたが、私はモジュールの初期化にフックできるIModuleのような果樹園が提供するインターフェイスはありますか?

答えて

3

オートファックとオーチャードのモジュールを混同しないでください。 Orchardのモジュールが起動するときにコードを実行するには、IOrchardShellEventsインターフェイス(Activatedメソッド)を実装する必要があります。またAutofacであなたの実装を登録することを忘れないでください:

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<Bootstrapper>().As<IOrchardShellEvents>().InstancePerLifetimeScope(); 
    } 
} 
+0

「IOrchardShellEvents」は私の頭の上から外して、 'IEventHandler'の実装です。これは' IDependency'の実装であるため、上記のように実装を登録する必要はないと思います。あなたがする必要があるのは 'IOrchardShellEvents'を実装することだけです。オーチャードはあなたのために登録を処理します。 –

0

解決済み! Autofac.Moduleを実装し、Load(ContainerBuilder)メソッドをオーバーライドしてください!

using Autofac; 

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     // Module initialization here! 
    } 
} 
+1

このエントリポイントである一方で、それは正しいものではありません、他の回答を参照してください –

+0

これは2011年に最良の答えだった場合、それが正しいではありません今すぐ答えてください。 IOrchardShellEventsまたはIFeatureEventHandlerを使用します。 –

+1

より具体的には、モジュールが最初に起動されたときだけでなく、オーチャードが初期化されるたびに通知を受けたいので、おそらくIOrchardShellEventsが必要です。 –

5

興味のあるイベントハンドラは2つあります。 IFeatureEventHandlerおよびIOrchardShellEventsIFeatureEventHandlerインターフェイスは、モジュールを有効、無効、インストール、およびアンインストールするためのフックを提供します。 IOrchardShellEventsインターフェースは、オーチャード・シェルの起動と終了のフックを提供します。そこに何かあなたのためのトリックを行う必要があります!

関連する問題