publish:end イベント ハンドラーがあり、エラーが発生した場合はユーザーに表示したいと考えています。これを行う方法はありますか?パブリッシュの終了画面 (またはどこかの前) にメッセージを表示するために何かにフックすることはできますか?
2 に答える
あなたの質問に興味をそそられたのは、これが Sitecore で可能になると私が期待するものの 1 つだからです。だから私はそれに飛び込みました、そしてそれが可能であると言ってうれしいです, 特定の目的のために!
呼び出されるイベント ハンドラーで、publish:end
現在実行中の公開ジョブを検索できます。ジョブを取得したら、そのステータス メッセージを変更できます。
var publishJobs = Sitecore.Jobs.JobManager
.GetJobs().Where(x => x.Category.Equals("publish"))
.ToList();
publishJobs.ForEach(x => x.Status.Messages.Add("This is a message inserted by the publish:end event"));
結果は、結果テキストボックスのパブリケーション ダイアログの最後のページに表示されます。
結果のテキストエリアの問題は、「ここをクリックして追加情報を表示する」リンクをクリックした場合にのみ表示されることです。
この動作を変更するには、 にあるダイアログ XML を変更する必要があります/sitecore/shell/Applications/Dialogs/Publish/Publish.xml
。そこで、結果のテキストエリアを常に表示するように設定できます。
ただし、欠点が 1 つあります。それは、どの仕事が出版の仕事なのかわからないということです...
各ジョブには、基本的に Guid とサーバーとサイトに関するいくつかの情報であるハンドルが割り当てられていますが、イベント ハンドラーにはこの情報がありません (または、少なくとも見つかりません)。
ほとんどの場合、実行中のすべてのパブリッシュ ジョブにメッセージを追加するだけで問題ないと思いますが (メッセージが既に存在するかどうかを確認した後)、考慮に入れる必要があります。
お役に立てれば!
publish:end
Sitecore インターフェースを知らない別のスレッドで実行されるため、ユーザーに直接通知することはできないと思います。ユーザーにメールを送信できます。
公開ステータス コンテンツ エディターの警告を追加して、公開が正常に完了したかどうかを編集者に知らせることもできます。
私はこれまでに使用したすべてのサイトコア サイトに公開ステータスをインストールしましたが、ユーザーは非常に便利だと感じています。