Sitecore 8:保存时同步存储桶项目

Pra*_*ade 3 sitecore bucket sitecore7 sitecore7.2 sitecore8

我已经看到了我们如何为新创建的存储桶项提供默认条件和默认操作.我也知道我们可以根据自定义日期字段创建自定义规则来构建路径.

但是,如何在日期字段和保存时设置项目路径.考虑一个例子.我们有一个桶项目模板说"新闻",其日期字段说"发布日期".我们有项目创建的设置,项目路径的创建日期如"/ News/2015/09/16/item1".现在,我们需要有一些逻辑,我们可以在更新"item1"的"发布日期"并且项目已保存时更改路径.

当项目的发布日期更新且项目被保存时,我们如何更新项目路径!我需要在OnItemSaved()方法中实现一些逻辑吗?

我已经在GeekHive发帖了

Ric*_*eal 5

最简单的方法是挂钩项目:保存事件并在那里同步存储桶.以下代码未经测试:

public class ItemSavedEventHandler
{
    public void Execute(object sender, ItemSavedEventArgs args)
    {
        Assert.IsNotNull(sender, "sender is null");
        Assert.IsNotNull(args, "args is null");

        using (new EventsDisabler())
        {
            var parameter = args.Item;
            if (!BucketManager.IsItemContainedWithinBucket(paremeter))
            {
                return;
            }

            var bucketItem = parameter.GetParentBucketItemOrParent();
            if (!bucketItem.IsABucket())
            {
                return;
            }

            BucketManager.Sync(bucketItem);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在包含大量项目的存储桶中,这将大大减慢保存过程.