1

我在树结构中以编程方式生成许多站点核心内容项。举个例子,内容树中的结构如下所示:

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

现在,Subfolder1 中的所有子项都使用相同的模板,其他子文件夹也是如此。我想以编程方式使所有子文件夹都可以存储。我知道如何使用 Sitecore UI 来做到这一点,但在这种情况下这是不切实际的,因为会有数千个这样的子文件夹。那么,我该如何以编程方式做到这一点?

4

1 回答 1

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

希望这可以帮助。

于 2014-09-18T16:24:43.433 回答