3

我们有一个站点,其中包含多个查询内容项的直接子项的查询。我们只希望子项按它们在内容树中出现的顺序排序。

我们正在使用 Glass Mapper,我们的集合属性如下所示:

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

上面的属性 Categories 以似乎是 alpha 顺序返回子项,但在某些情况下它似乎有点随机。

知道如何设置查询以按内容树的顺序提取吗?

4

1 回答 1

6

斯科特,

我相信 Glass 正在对这些 SitecoreQueries 使用快速查询,这就是为什么您没有得到任何可预测的排序顺序的原因。不幸的是,快速查询不允许在查询语法中进行排序。如果您使用以下语法将查询放入 Sitecore 开发人员中心的 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 回答