Events sitecore--在发布目录时如何通过代码获取所有发布项

Events sitecore--在发布目录时如何通过代码获取所有发布项,events,handler,sitecore,publish,Events,Handler,Sitecore,Publish,发布目录时如何按代码获取所有发布项目,以及应将处理程序添加到哪个事件,publish:begin或publish:itemProcessing?取决于您的实际需要,将自定义处理器注入publishItem管道而不是使用publish:itemProcessing事件可能更有意义。如果仔细查看该管道(如果要设置自定义事件处理程序,请从web.config引用开始搜索“) 然后创建一个支持此引用的类 使用系统; 使用System.Collections.Generic; 使用System.Lin

发布目录时如何按代码获取所有发布项目,以及应将处理程序添加到哪个事件,
publish:begin
publish:itemProcessing

取决于您的实际需要,将自定义处理器注入publishItem管道而不是使用
publish:itemProcessing
事件可能更有意义。如果仔细查看该管道(如果要设置自定义事件处理程序,请从web.config引用开始搜索“


然后创建一个支持此引用的类

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统集合;
使用Sitecore.Diagnostics;
使用Sitecore.Sites;
使用Sitecore.Configuration;
使用Sitecore.Caching;
使用Sitecore.Events;
使用Sitecore.Publishing;
使用Sitecore.Data.Events;
使用Sitecore.Data;
使用Sitecore.Data.Items;
名称空间YourNamespace{
公共课你的课{
public void YourHandlerMethod(对象发送者、事件args args){
Assert.ArgumentNotNull(发送方,“发送方”);
Assert.ArgumentNotNull(args,args);
//尝试获取sitecore事件参数
if(args.GetType().ToString().Equals(“Sitecore.Events.SitecoreEventArgs”)){
SitecoreEventArgs sargs=(SitecoreEventArgs)args;
foreach(sargs.Parameters中的对象o){
//尝试获取发布者对象
if(o.GetType().ToString().Equals(“Sitecore.Publishing.Publisher”)){
出版商p=(出版商)o;
如果(p!=null){
项目根=p.Options.RootItem;
布尔b=p.Options.p;
if(p.Options.Mode.Equals(PublishMode.SingleItem)){
//只发布了一个项目
}
}
}
}
}
}
}
}

通过此类,您可以尝试访问publisher对象,该对象将为您提供根项目发布和发布选项。发布选项将告诉您是发布了单个项目还是发布了所有语言版本。

thx对于我们的管道解决方案,您能提供一些相关文章吗?thx提前提供