【问题标题】:Sitecore Sortorder vs Subitem SortingSitecore Sortorder 与子项排序
【发布时间】:2014-08-27 14:50:53
【问题描述】:

在 Sitecore 中,我认为 sortorder 总是优先于子项排序。我的假设是,如果一个项目的子项目的排序顺序为 100,而另一个项目的排序顺序为 0,则该项目的子项目排序设置为 0 将首先出现。在最近的一个项目中,我看到内容树中发生了相反的情况。子项排序被优先考虑。有没有办法配置检查 sortorder 和 subitem 排序的顺序?我一直在查看我的 web.config,并将它与我的一个项目进行了比较,该项目按我认为应该的方式工作,但我找不到任何让我想到的东西。

我在项目的内容树中看到的似乎给予子项排序优先级的视觉效果:

parent - subitem sorting = created
   child1 - created = 01012014, sortorder = 100
   child2 - created = 02022014, sortorder = 0

【问题讨论】:

  • 你在哪里看?是否在 Sitecore 树中没有遵守排序顺序?
  • 是的,内容编辑器中的项目以一种我意想不到的方式出现。我没有尝试通过父项目的 Children 属性将项目拉出,但尝试一下并查看它们以什么顺序出现可能是个好主意。

标签: sorting sitecore subitem


【解决方案1】:

这可能是 Sitecore 中的一个错误,但它也可能按预期工作,您可能需要联系 Sitecore 支持以找出问题。

“已创建”的子排序指向 Sitecore.Data.Comparers.CreatedComparer,Sitecore.Kernel。如果您查看此类中的 ExtractKey() 方法,您会发现它不包括原始项目的 SortOrder。没有这个 Sitecore 将仅按创建日期排序。

   public override IKey ExtractKey(Item item)
    {
        Assert.ArgumentNotNull(item, "item");
        KeyObj keyObj = new KeyObj()
        {
            Item = item,
            Key = this.GetCreationDate(item)
        };
        return keyObj;
    }    

相比之下,您可以查看指向 Sitecore.Data.Comparers.UpdatedComparer,Sitecore.Kernel 的“更新”的子排序。在其 ExtractKey() 方法中,您会看到它返回项目的排序顺序,因此您将获得更新日期和排序顺序之间的混合排序。

public override IKey ExtractKey(Item item)
    {
        Assert.ArgumentNotNull(item, "item");
        KeyObj keyObj = new KeyObj()
        {
            Item = item,
            Key = item.Statistics.Updated,
            Sortorder = item.Appearance.Sortorder
        };
        return keyObj;
    }

【讨论】:

    【解决方案2】:

    当您指定要使用的自定义排序器时,完全取决于运行比较器的代码来确定项目的排序方式。

    比较器必须是System.Collections.Generic.IComparer,但之后无法保证是否使用排序顺序字段,或者如果使用它,它将按升序或降序排列。

    我建议检查为特定项目选择的排序器,并使用 dotPeek 分析排序器的源代码。


    在构建自定义排序器时,最好扩展 Sitecore 的 Sitecore.Data.Comparers.Comparer 类并覆盖 DoCompare 方法。它将始终处理排序顺序字段,并回退到DoCompare 方法进行二次排序。

    【讨论】:

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