6

Tridion 2011のイベントシステムについて質問があります.....他のページが公開キューに送信されたときに別のページを公開することは可能ですか?

現在、サイトナビゲーションとサイトマップを定義するXMLファイルがありますが、残念ながら現在、新しいページがWebサイトに追加されるたびに手動で公開する必要があります。

イベントシステムからの自動公開についても懸念しているのは、同じページを数回公開する必要があることです。実際には、公開キューの最後のアイテムがトランザクションを終了した後にのみ公開する必要があります。

4

3 に答える 3

8

公開アクションに応じてTridionによって公開されているアイテムの数を変更したいときはいつでも、私の心はすぐにカスタムリゾルバーを叫びます。

クリスサマーズは、しばらく前に彼らとの彼の経験について素晴らしい記事を書きました:http: //www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute

ヌーノは彼の経験をもう少し簡潔に書きました:http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html

ナビゲーションをResolvedItemsコレクションに追加するだけでよいように思えます。リゾルバーを一貫して使用する場合、心配しているように見える公開トランザクションの爆発的な増加は発生せず、代わりにすべての関連アイテムが1つのトランザクションで公開(およびデプロイ)されます。

于 2012-08-02T18:31:33.463 に答える
7

PublishTransaction Saveイベントをサブスクライブすることにより、トランザクションごとにサイトマップを公開できます(多くのページ、構造グループなどを含めることができます)。

公開キューを確認して、待機中のトランザクションがあるかどうかを確認することを検討できますが、理論的には、これによりサイトマップの公開が非常に長い間延期される可能性があります。

EventSystem.SubscribeAsync<PublishTransaction, SaveEventArgs>(
    (subject, args, phase) =>
    {
        if (!PublishStransactionStateIsSuccessfullyCompleted(subject))
            return;

        // Code to publish sitemap
    },
    EventPhases.TransactionCommitted
);
static bool PublishStransactionStateIsSuccessfullyCompleted(PublishTransaction transaction)
{
    return transaction.State == PublishTransactionState.Success ||
            transaction.State == PublishTransactionState.Warning;
}
于 2012-08-02T16:33:14.097 に答える
4

これは、実装中に何度も発生するものであり、確かに、公開されたアイテムに依存するナビゲーションまたはサイトマップがあります(これは私の意見では理想的な状況ではありません)。

これに対する可能な解決策は、イベントシステムを使用して、XMLを生成するページを低い優先度でパブリッシングキューに配置することです。これにより、通常の公開アクションが実行された後にのみ公開されることが(ある程度)確実になります。次に、イベントはこのページがすでにキューにあるかどうかを確認する必要があるため、2回目に追加されることはありません。

これにより、1日に複数回公開されることを防ぐことはできませんが、少なくとも2回キューに入れられないようにする必要があります。専用のマルチスレッドパブリッシャーを備えた高速システムでは、アクティビティなどによっては、1時間ごとに公開されることを意味する場合があります。

もう1つのオプションは、イベントシステムを使用してそのページの1日1回の公開をスケジュールし、そのプロセスを繰り返して、毎日同時に1回だけ公開されるようにすることです。これにより、XMLは1日に1回しか更新されないため、XMLの精度が低下しますが、公開キューがいっぱいになりすぎるのを防ぐことができます。これが問題になる可能性があります。

于 2012-08-02T16:31:10.557 に答える