C# sitecore中是否自动接受克隆通知?

C# sitecore中是否自动接受克隆通知?,c#,sitecore,C#,Sitecore,我有一个从另一个sitecore项目克隆的sitecore项目。将子项添加到父项时,我希望它也将该项添加到克隆下。它可以做到这一点,但我必须手动接受每个更改。我有250个克隆人 有没有一种方法可以自动接受这些通知,或者一开始就阻止他们这样做?中的“有人在评论”部分提出类似的问题: 为已克隆的项创建新子项时,它将 似乎您必须手动转到每个克隆并接受该子项 将在克隆下创建。有没有办法不必这样做? 对于一个新的解决方案,我们将有一个源和源的多个克隆 客户不希望访问每个克隆并接受子项。 总是有子项会更容

我有一个从另一个sitecore项目克隆的sitecore项目。将子项添加到父项时,我希望它也将该项添加到克隆下。它可以做到这一点,但我必须手动接受每个更改。我有250个克隆人

有没有一种方法可以自动接受这些通知,或者一开始就阻止他们这样做?

中的“有人在评论”部分提出类似的问题:

为已克隆的项创建新子项时,它将 似乎您必须手动转到每个克隆并接受该子项 将在克隆下创建。有没有办法不必这样做? 对于一个新的解决方案,我们将有一个源和源的多个克隆 客户不希望访问每个克隆并接受子项。 总是有子项会更容易和用户友好 毫无疑问地出现在克隆中。这同样适用于 内容作者已覆盖克隆中的值的实例, 然后,“超级作者”更改源项中的值。这怎么可能 更改可以应用于所有克隆,而无需手动克隆 接受改变?干杯

sitecore发布了带有一些伪代码的回复。基本上,这可以转化为以下内容:

构建一个事件类 注册事件

在“评论”部分,有人问了一个类似的问题:

为已克隆的项创建新子项时,它将 似乎您必须手动转到每个克隆并接受该子项 将在克隆下创建。有没有办法不必这样做? 对于一个新的解决方案,我们将有一个源和源的多个克隆 客户不希望访问每个克隆并接受子项。 总是有子项会更容易和用户友好 毫无疑问地出现在克隆中。这同样适用于 内容作者已覆盖克隆中的值的实例, 然后,“超级作者”更改源项中的值。这怎么可能 更改可以应用于所有克隆,而无需手动克隆 接受改变?干杯

sitecore发布了带有一些伪代码的回复。基本上,这可以转化为以下内容:

构建一个事件类 注册事件

public abstract class AcceptCloneNotificationsEventBase<T> where 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);
                }
            }
        }
    }
}
public class ImplementationOfBase: 
             AcceptCloneNotificationsEventBase<FieldChangedNotification>
{
    protected override bool ShouldAcceptNotification(Item item, Item parent)
    {
        return /*filter the event as you see fit here*/;
    }
}