【问题标题】:Sitecore/Glass Mapper: how to return query in order of content treeSitecore/Glass Mapper:如何按内容树的顺序返回查询
【发布时间】:2015-01-02 23:17:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • Glass 默认不使用快速查询。我不确定为什么会这样。您是否将 Glass 返回的结果与 Sitecore API 返回的结果进行了比较?

标签: sitecore glass-mapper


【解决方案1】:

斯科特,

我相信 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 以正确的顺序返回您的物品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多