Tôi đang sử dụng Hệ thống sự kiện của Tridion 2011 để thực hiện một số hành động bổ sung khi hủy xuất bản thành phần. Tôi đang sử dụng mã được tìm thấy here để xuất bản thành phần có liên quan.Làm thế nào để có được (un-) PublicationTarget cho sự kiện UnPublish thành phần trong Tridion 2011?
Tôi đăng ký xử lý sự kiện của tôi như sau:
EventSystem.Subscribe<Component, UnPublishEventArgs>(
RemoveAndRepublish, EventPhases.Initiated);
... và phương pháp xử lý của tôi là như sau:
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});
}
Vấn đề của tôi là UnPublishEventArgs.Targets
tài sản là một IList<PublishingTarget>
, thời gian chạy là List<TargetType>
và tôi cần có đối tượng PublicationTarget
để có thể gọi PublishEngine.Publish(...)
.
Câu hỏi của tôi là: có cách nào để lấy Mục tiêu công khai hiện tại (un-) từ sự kiện UnPublish không?
Có ai có thể cung cấp trợ giúp nào không?
OK, đoạn thứ 2 có vẻ hứa hẹn hơn ... có thể bạn cho tôi một ví dụ? Phương thức 'PublishEngine.Publish' lấy một' IEnumerable 'không phải là 'IEnumerable '. –
Doh, hoàn toàn không thấy quá tải của 'PublishEngine.Publish()' có một mảng 'TargetType'. Cảm ơn! –