我有一个sitecore项目,已从另一个sitecore项目克隆.当我向父项添加子项时,我希望它也在克隆下添加项.它这样做但我必须手动接受每个更改.我有250个克隆!
有没有办法自动接受这些通知或阻止它们首先执行此操作?
在sitecore的这篇文章中,有人在评论部分提出了类似的问题:
当您为已克隆的项创建新的子项时,您似乎必须手动转到每个克隆并接受在克隆下创建子项.有没有办法不必这样做?对于一个新的解决方案,我们将有几个克隆来自一个来源,客户不希望去每个克隆并接受一个子项目.在没有任何问题的情况下,子项总是出现在克隆中会更容易和用户友好.这同样适用于内容作者覆盖克隆中的值的实例,然后"权限作者"更改源项目中的值.如果没有克隆必须手动接受更改,如何将此更改应用于所有克隆?干杯
sitecore发布了一些带有伪代码的回复.基本上这可以转化为以下内容:
public abstract class AcceptCloneNotificationsEventBasewhere T : Notification { protected abstract bool ShouldAcceptNotification(Item item, Item parent); public void AcceptClone_SavedItem(object sender, EventArgs args) { var item = (Item)Event.ExtractParameter(args, 0); var parent = item.Parent; foreach (var clone in item.GetClones()) { foreach (var notification in clone.Database.NotificationProvider.GetNotifications(clone.Uri)) { if (notification is T && ShouldAcceptNotification(item, parent)) { notification.Accept(clone); } } } } public void AcceptClone_CreateItem(object sender, EventArgs args) { var item = (Item)Event.ExtractParameter(args, 0); var parent = item.Parent; foreach (var clone in parent.GetClones()) { foreach (var notification in clone.Database.NotificationProvider.GetNotifications(clone.Uri)) { if (notification is T && ShouldAcceptNotification(item, parent)) { notification.Accept(clone); } } } } }
我把它建成了一个abstract
类,所以我可以多次使用它.实现如下:
public class ImplementationOfBase: AcceptCloneNotificationsEventBase{ protected override bool ShouldAcceptNotification(Item item, Item parent) { return /*filter the event as you see fit here*/; } }