3

コンテンツ アイテムの直接の子をクエリするクエリがいくつかあるサイトがあります。子だけをコンテンツ ツリーに表示される順序で並べ替えるだけです。

Glass Mapper を使用しており、コレクション プロパティは次のようになります。

[SitecoreQuery("/sitecore/content/Global/Team Members/Categories/*")]
public IEnumerable<ICategory> Categories { get; set; }

上記のプロパティ Categories は、子アイテムをアルファ順に返しますが、場合によっては少しランダムに見えます。

コンテンツ ツリーの順序でプルするようにクエリを設定する方法はありますか?

4

1 に答える 1

6

スコット、

Glass はこれらの SitecoreQueries に高速クエリを使用していると思います。そのため、予測可能な並べ替え順序が得られません。残念ながら、高速クエリでは、クエリ構文での並べ替えが許可されていません。次の構文を使用して、クエリを Sitecore の Developer Center の XPath Builder に入れると、同じ結果が得られます。

fast:/sitecore/content/Global/Team Members/Categories/*

これを解決する最も簡単な方法は、Sitecore の __Sortorder フィールドを ICategory 定義に追加することだと思います。

[SitecoreField("__Sortorder"),]
string Sortorder { get; set; }

次に、これのソートされたバージョンを返す別のプロパティをモデルに追加できます。

public IEnumberable<ICategory> SortedCategories { get { return Categories.OrderBy(s=>s.Sortorder); } }

[SitecoreChildren] デコレーターを使用して、現在のアイテムの子を取得することもできることに注意してください。それが実際にあなたが求めているものかどうかはわかりませんが、そのデコレーターは実際には、Sitecore の SortOrder に従って正しい順序でアイテムを返します。

于 2015-01-03T04:09:37.443 に答える