我正在以树结构的编程方式生成许多sitecore内容项。举个例子,内容树中的结构如下:
Sitecore
content
Item1
SubFolder1 (containing thousands of subitems)
Item2
SubFolder2 (containing thousands of subitems)
...and so on
现在,Subfolder1中的所有子项都使用相同的模板,类似于其他子文件夹。我想让所有的子文件夹都可以通过编程实现。我知道如何使用Sitecore UI来做到这一点,但在这种情况下这是不实际的,因为会有数千个这样的子文件夹。那么,我该如何通过编程实现呢?
添加以下命名空间以使用buckets扩展方法:
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
。
希望这能有所帮助。