以编程方式使Sitecore项可以进行存储

时间:2014-09-17 22:09:45

标签: sitecore sitecore7 buckets

我在树形结构中以编程方式生成了许多sitecore内容项。举一个例子,结构在内容树中看起来像这样:

Sitecore
    content
       Item1
          SubFolder1 (containing thousands of subitems)
       Item2          
          SubFolder2 (containing thousands of subitems)
...and so on

现在,Subfolder1中的所有子项都使用相同的模板,类似于其他SubFolders。我想以编程方式使所有子文件夹都可以进行存储。我知道如何使用Sitecore UI执行此操作,但在这种情况下这不实用,因为会有数千个这样的子文件夹。那么,我该如何以编程方式进行呢?

1 个答案:

答案 0 :(得分:4)

添加以下命名空间以使用存储区扩展方法:

using Sitecore.Buckets.Extensions;

使用以下代码创建项目桶:

public static void CovertToBucketItem(Item SubFolderItem)
{ 
    Sitecore.Buckets.Managers.BucketManager.CreateBucket(SubFolderItem);
    using (new Sitecore.Data.Items.EditContext(SubFolderItem, SecurityCheck.Disable))
    {
        if (!IsBucketItemCheck(SubFolderItem))
        {
            IsBucketItemCheckBox(SubFolderItem).Checked = true;
        }
    }
}
public static bool IsBucketItemCheck( Item item)
{
    return (((item != null) && (item.Fields[Sitecore.Buckets.Util.Constants.IsBucket] != null)) && item.Fields[Sitecore.Buckets.Util.Constants.IsBucket].Value.Equals("1"));
}

public static CheckboxField IsBucketItemCheckBox( Item item)
{
    return item.Fields[Sitecore.Buckets.Util.Constants.IsBucket];
}

所有子项目都可以通常的方式添加到SubFolderItem

SubFolderItem.Add(SubItemName,SubItemTemplate)

确保子项目的模板Standard Value已将字段Bucketable设置为

希望这有帮助..