gpt4 book ai didi

c# - 如何在 Tridion 2011 中获取组件 UnPublish 事件的(非)PublicationTarget?

转载 作者:太空狗 更新时间:2023-10-29 20:21:00 25 4
gpt4 key购买 nike

我正在使用 Tridion 2011 的事件系统在取消发布组件时执行一些额外的操作。我正在使用找到的代码 here发布相关组件。

我正在按如下方式注册我的事件处理程序:

EventSystem.Subscribe<Component, UnPublishEventArgs>(
RemoveAndRepublish, EventPhases.Initiated);

...我的处理方法如下:

public void RemoveAndRepublish(Component cmp, UnPublishEventArgs args, 
EventPhases phase)
{
// ... code to locate related component, and perform required actions...

var instruction = new PublishInstruction(cmp.Session)
{
DeployAt = DateTime.Now,
RenderInstruction = new RenderInstruction(cmp.Session)
{
RenderMode = RenderMode.Publish
},
ResolveInstruction = new ResolveInstruction(cmp.Session)
{
IncludeComponentLinks = true
},
RollbackOnFailure = true,
StartAt = DateTime.MinValue
};

var target = args.Targets.FirstOrDefault();

PublishEngine.Publish(new[] {related}, instruction, new[] {target});
}

我的问题是 UnPublishEventArgs.Targets属性是 IList<PublishingTarget> ,在运行时结果是 List<TargetType> ,我需要得到一个 PublicationTarget对象能够调用 PublishEngine.Publish(...) .

我的问题是:有没有办法从 UnPublish 事件中获取当前(非)PublicationTarget?

谁能提供任何帮助?

最佳答案

您需要自己从TargetType(s) 中找出PublicationTarget(s)。根据项目的 TargetTypePublication,您需要遍历 PublicationTargets 以查看它们是否允许您的Publication 发布给他们。这将(最终)为您提供一个 PublicationTargets 列表。不幸的是,这是相当多的工作:(

综上所述,您真的需要 PublicationTarget 吗?如果您需要从相同的 Publication/Target 组合重新发布或取消发布项目,您应该能够将相同的 TargetType 数组解析为 PublishEngine.Publish(...) 方法。

当我搜索文档时,我在 PublishEngine() 上看到以下覆盖:

PublishEngine.Publish Method (IEnumerable<(Of <(<'IdentifiableObject>)>)>, PublishInstruction, IEnumerable<(Of <(<'TargetType>)>)>, PublishPriority)

public static ICollection<PublishTransaction> Publish(
IEnumerable<IdentifiableObject> items,
PublishInstruction publishInstruction,
IEnumerable<TargetType> targetTypes,
PublishPriority priority
)

关于c# - 如何在 Tridion 2011 中获取组件 UnPublish 事件的(非)PublicationTarget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com