我添加了一个publish:end方法,以便在发布特定类型的项目时发布特定的相关项目。我有OnPublishEnd和OnPublishEndRemote方法,但我需要确保发布到与刚刚发布的项目相同的发布目标。我已经在OnPublishEnd事件中有发布者,但我不确定如何在远程事件中获取它:
public void OnPublishEnd(object sender, EventArgs args)
{
var sitecoreArgs = args as Sitecore.Events.SitecoreEventArgs;
if (sitecoreArgs == null)
{
return;
}
var publisher = sitecoreArgs.Parameters[0] as Publisher;
if (publisher == null)
{
return;
}
var rootItem = publisher.Options.RootItem;
if (rootItem.TemplateID == IEventConstants.TemplateId)
{
PublishEventParent(rootItem, publisher);
}
}
public void OnPublishEndRemote(object sender, EventArgs args)
{
var args2 = args as PublishEndRemoteEventArgs;
if (args2 == null)
{
return;
}
Item rootItem = Factory.GetDatabase("web").GetItem(new ID(args2.RootItemId));
if (rootItem.TemplateID == IEventConstants.TemplateId)
{
PublishEventParent(rootItem, ???publisher???);
}
}
public void PublishEventParent(Item item, Publisher publisher)
{
var adHocPage =
item.Axes.GetAncestors().FirstOrDefault(x => x.TemplateID == IAd_Hoc_PageConstants.TemplateId);
if (adHocPage != null)
{
publisher.Publish();
}
}
如何在远程事件中获取发布者/发布选项/发布目标?
答案 0 :(得分:1)
以下是PublishEndRemoteEventArgs
类中的所有属性列表。
发布结束远程事件通常在CD服务器上触发。它们不应该与master
数据库有任何联系,因此不应该在那里进行任何其他发布。
public bool CompareRevisions { get; protected set; }
public bool Deep { get; protected set; }
public DateTime FromDate { get; protected set; }
public string LanguageName { get; protected set; }
public PublishMode Mode { get; protected set; }
public DateTime PublishDate { get; protected set; }
public List<string> PublishingTargets { get; protected set; }
public bool RepublishAll { get; protected set; }
public Guid RootItemId { get; protected set; }
public string SourceDatabaseName { get; protected set; }
public string TargetDatabaseName { get; protected set; }