アイテムのブランチへのアクセス

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

分岐内のすべての項目にアクセスするには、再帰メソッドとSitecore.Data.Items.Item.Childrenプロパティを使用します。たとえば、Masterデータベース内の /Sitecore/Content/Homeアイテムと、そのアイテムの各子孫を処理するには、次のようにします。

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
ProcessRecursively(home);

...

    private void ProcessRecursively(Sitecore.Data.Items.Item item)   
    {
        foreach(Sitecore.Data.Items.Item child in item.Children)
        {
            // Process child item
            ProcessRecursively(child);
        }
    }
警告

再帰メソッドが引数をそれ自体に渡す場合、そのメソッドは無限ループを実装します。

分岐内のルート項目の処理を回避するには、ループ内の処理ロジックを子を反復処理する再帰メソッドに移動し、そのロジックでは、再帰メソッドに渡された項目ではなく子項目を処理します。たとえば、Masterデータベース内の/Sitecore/Content/Homeアイテムの子孫のみを処理するには、次のようにします。

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
ProcessRecursively(home);

...

private void ProcessRecursively(Sitecore.Data.Items.Item item)
{
    foreach(Sitecore.Data.Items.Item child in item.Children)
    {
        // Process child item
        ProcessRecursively(child);
    }
}
メモ

また、Sitecoreクエリを使用して、descendant軸またはdescendant-or-self軸を使用してブランチ全体にアクセスすることもできます。

この記事を改善するための提案がある場合は、 お知らせください!