Программно сделать элемент Sitecore сегментированным

Я программно создаю множество элементов контента sitecore в виде древовидной структуры. В качестве примера структура в дереве содержимого выглядит примерно так:

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

Теперь все подэлементы в подпапке Subfolder1 используют один и тот же шаблон, как и другие подпапки. Я хочу, чтобы все подпапки были объединены в корзину программно. Я знаю, как это сделать с помощью пользовательского интерфейса Sitecore, но в данном случае это непрактично, так как таких подпапок будут тысячи. Итак, как мне сделать это программно?


person seeker    schedule 17.09.2014    source источник


Ответы (1)


Добавьте следующее пространство имен, чтобы использовать методы расширения сегментов:

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.

Надеюсь это поможет.

person Ahmed Okour    schedule 18.09.2014