我在树形结构中以编程方式生成了许多sitecore内容项。举一个例子,结构在内容树中看起来像这样:
Sitecore
content
Item1
SubFolder1 (containing thousands of subitems)
Item2
SubFolder2 (containing thousands of subitems)
...and so on
现在,Subfolder1中的所有子项都使用相同的模板,类似于其他SubFolders。我想以编程方式使所有子文件夹都可以进行存储。我知道如何使用Sitecore UI执行此操作,但在这种情况下这不实用,因为会有数千个这样的子文件夹。那么,我该如何以编程方式进行呢?
答案 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
设置为
希望这有帮助..