我有一个 publish:end 事件处理程序,如果它有任何错误,我想将它显示给用户。有什么办法吗?我可以 Hook 某些东西以在发布结束屏幕上(或之前的任何地方)显示消息吗?
最佳答案
您的问题引起了我的兴趣,因为这是我希望通过 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
中的对话框 XML。
在那里,您可以将结果文本区域设置为始终可见。
不过有一个缺点:您无法知道您的发布工作是哪份工作...
每个作业都有一个分配给它的句柄,它基本上是一个 Guid 和一些关于服务器和站点的信息,但是在你的事件处理程序中你没有这些信息(或者至少我找不到它)。
我认为在大多数情况下,将消息简单地添加到所有正在运行的发布作业中是没有问题的(在检查它是否已经存在之后),但这是需要考虑的事情。
希望这对您有所帮助!
关于c# - Sitecore 发布 :end event interaction with user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944113/