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 に答える