我有一个 publish:end 事件处理程序,如果它有任何错误,我想将它展示给用户。有没有办法做到这一点?我可以连接一些东西以在发布结束屏幕上(或任何地方之前)显示消息吗?
2 回答
您的问题引起了我的兴趣,因为这是我希望通过 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 和一些关于服务器和站点的信息,但是在你的事件处理程序中你没有这个信息(或者至少我找不到它)。
我认为在大多数情况下,将消息简单地添加到所有正在运行的发布作业(在检查它是否已经存在之后)是没有问题的,但这是需要考虑的事情。
希望这可以帮助!
我认为您不能直接通知用户,因为publish:end
它是在另一个不知道 Sitecore 接口的线程上执行的。您可以向用户发送电子邮件。
您还可以添加发布状态内容编辑器警告,让编辑器知道发布是否成功完成。
我已经在我合作过的所有 sitecore 网站上安装了发布状态,用户发现它非常有用。