Sitecoreでアイテムを取得する際に少し工夫すれば、階層のアイテムを取得できたり、取得する際の冗長を回避することができます。
逆にパフォーマンスに問題が出てくるようなメソッドもあります。
今回は、一部ではございますが、5つのメソッドをご紹介していきます。
1. 子アイテムをソートして取得するメソッド
Sitecoreで子アイテムを取得する際によく使われる 「GetChildren()」 ですが、
ソートして取得したい場合は、「SkipSorting」を使えば、冗長を回避することができます。
例
GetChildren(Sitecore.Collections.ChildListOptions.SkipSorting)
.OrderByDescending();
2. すべての祖先アイテム一覧を取得するメソッド
コンテキストアイテムから Home アイテムまでのすべての祖先アイテムの一覧を取得する方法です。
例
Axes.GetAncestors().Where(i=> i.Axes.IsDescendantOf (homeItem))
3. アイテムが最終状態かどうかを調べるメソッド
アイテムのワークフローが最終状態かどうかを調べる方法です。
例
item.State.GetWorkflowState().FinalState
4. アイテム同士の祖先が同じかを調べるメソッド
コンテキストアイテムと別のアイテム同士の祖先が同じかを調べる方法です。
例
rootItem.Axes.IsAncestorOf(contextItem);
5. すべてのサブツリーアイテムを取得するメソッド
そして、最後に使わないほうがいいメソッドをご紹介します。
こちらのメソッドは再帰的にすべてのサブツリーアイテムを取得することができて大変便利ではありますが、
ツリー全体をメモリ内でロードするため、パフォーマンス上の問題が発生してしまいます。
使う際は十分に注意が必要になります。
Axes.GetDescendants()
以上でアイテムを取得する際のメソッドのご紹介は終わりになります。
ぜひ、いろいろな取得を試してみてください。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。