我有一个发布:end事件处理程序,如果有任何错误,我想向用户显示它。有没有办法做到这一点?我可以在发布结束屏幕上(或在任何地方之前)挂钩以显示消息吗?
答案 0 :(得分: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"));
结果将显示在“结果”文本框中的发布对话框的最后一页上。
结果textarea的结果是,您只看到点击“点击此处查看其他信息”链接。
要更改该行为,您需要修改/sitecore/shell/Applications/Dialogs/Publish/Publish.xml
中的对话框XML。
在那里,您可以将结果textarea设置为始终可见。
但有一个缺点:你不知道你的出版工作是哪个工作......
每个作业都有一个分配给它的句柄,它基本上是一个Guid和一些关于服务器和站点的信息,但在你的事件处理程序中你没有这些信息(或者至少我找不到它) )。
我认为在大多数情况下,简单地将消息添加到所有正在运行的发布作业(在检查它是否已经存在之后)是没有问题的,但这是需要考虑的事情。
希望这有帮助!
答案 1 :(得分:2)
我认为您不能直接通知用户,因为publish:end
在另一个不知道Sitecore接口的线程上执行。您可以向用户发送电子邮件。
您还可以添加publishing status content editor warning,让编辑知道发布是否成功完成。
我已经在我使用的所有sitecore网站上安装了发布状态,用户发现它非常有用。