4

我有一个 publish:end 事件处理程序,如果它有任何错误,我想将它展示给用户。有没有办法做到这一点?我可以连接一些东西以在发布结束屏幕上(或任何地方之前)显示消息吗?

4

2 回答 2

4

您的问题引起了我的兴趣,因为这是我希望通过 Sitecore 实现的那些事情之一,但没有人真正花时间去了解如何去做。所以我一头扎进了它,我很高兴地说这是可能的,达到一定的目的!

在您调用的事件处理程序中,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"));

结果将显示在结果文本框中发布对话框的最后一页。

在此处输入图像描述

结果文本区域的问题是,您只有在单击“单击此处查看其他信息”链接时才能看到。

要更改该行为,您需要修改位于/sitecore/shell/Applications/Dialogs/Publish/Publish.xml. 在那里,您可以将结果文本区域设置为始终可见。

但是有一个缺点:你不知道哪个工作是你的出版工作......

每个作业都有一个分配给它的句柄,它基本上是一个 Guid 和一些关于服务器和站点的信息,但是在你的事件处理程序中你没有这个信息(或者至少我找不到它)。

我认为在大多数情况下,将消息简单地添加到所有正在运行的发布作业(在检查它是否已经存在之后)是没有问题的,但这是需要考虑的事情。

希望这可以帮助!

于 2012-12-19T12:08:24.653 回答
2

我认为您不能直接通知用户,因为publish:end它是在另一个不知道 Sitecore 接口的线程上执行的。您可以向用户发送电子邮件。

您还可以添加发布状态内容编辑器警告,让编辑器知道发布是否成功完成。

我已经在我合作过的所有 sitecore 网站上安装了发布状态,用户发现它非常有用。

于 2012-12-19T09:50:25.480 回答