2012-03-20 6 views
-1

Tridion 2009ページの公開者を決定する必要があります。Tridion 2009 - 誰がページを公開したか決定する

例として使用してください: 出版我々はイベントシステム「を、子出版物で非公開/公開」使用してパブリケーションAでページを公開すると、今のためにトリガされます

から継承 公報Bを 出版物A中のページと我々は唯一の出版物からのページにイベントシステムを使用するこの場合においても公表B.

中のページの

のような何か:

public override void OnPageSetPublishedToPost(Page page, string publicationTarget, bool published, string user) 
{ 
    if (!page.IsTriggeredByParent) 
    { 
    // do stuff 
    } 
} 

"IsTriggeredByParent"の値を決定する方法がわかりません。

が、これは不可能であるSDL Tridionの2009年にはお時間を

+0

作業中のTridionのバージョンと、使用しようとしているイベントハンドラ/トリガを指定できます。 –

+0

Tridion 2009を使用しています。イベントは次のとおりです。 'public override voidページが公開された後にOnPageSetPublishedToPost(ページページ、文字列publicationTarget、bool公開、文字列ユーザー)'が呼び出されます。内部では、パブリッシュ・アクトが親のパブリケーションによってトリガーされるかどうかを判断する必要があります。 – tacanitii

+0

多くの掘り出しがなければ、私はあなたがしようとしていることがOnPageSetPublishedToPostトリガーを使ってのみ可能であると確信していません。 OnPageResolvePreイベントを使用する方法はありますか?おそらく、コード内で実際に達成しようとしていることを説明して、別の創造的なソリューションを提案することができます。 –

答えて

4

をいただきありがとうございます、そこCOMベースのイベントシステムは、イベントがどこから来たのか特定する方法はありません。

SDL Tridion 2011 .NETイベントシステムでは、イベントスタックにアクセスできます。これは、アクションが別のアクションの一部として実行されたかどうかを検出できることを意味します(たとえば、パラメータtrueのVersionedItemでの保存でもアイテムをチェックインし、そのイベントをSaveイベントの一部として発生させます)。あなたの仕事を達成するためには、アップグレードが必要だと思います。

+0

バートありがとうございます。これは、少なくとも問題を明確にします。 2009年の直接的な解決策はありません。我々は異なるアプローチを試みています。パブリッシュイベントの内部で親ページをキューに入れたい場合、キューにある子ページが到着したときにイベントを無視することができます。このソリューションは、ページを公開するときに(asynceventsがfalseに設定された)Tridionが最初に親ページ1のイベントを呼び出し、その子ページを次に親ページ2に渡すと仮定しています。 – tacanitii

+0

メモリが正しく機能している場合、COMベースのイベントシステムは、他のイベントに基づいてイベントをトリガしません。あなたが言っているものがうまくいくかどうかは分かりません。公開キューに親をプログラム的に追加すると、別の発行トランザクションとして処理され、独自のイベントが発生します。 –

+0

イベントは既に動作しています。基本的に、OnPageSetPublishedToPreはページAに対して、次に各Aの子ページに対して呼び出されます。これは実際問題です。 OnPageSetPublishedToPre内の特定の呼び出し(親ページ用)をキューに入れ、親の直後に処理される子ページ用の標準コードをスキップします。これがうまくいくためには、Tridionがいつも明確な方法でイベントを呼び出す必要があります:親A、子どもA1、子A2、親B ... – tacanitii

関連する問題