Tee*_*now 3 sorting sitecore subitem
在 Sitecore 中,我认为 sortorder 总是优先于 subitem 排序。我的假设是,如果其中一个子项的排序顺序为 100,另一个项的排序顺序为 0 之一,则项的子项排序设置为 0 中的一个,那么项的子项排序设置为 0 无关紧要。在最近的一个项目中,我看到内容树中发生了相反的情况。子项排序优先。有没有办法配置检查 sortorder 和 subitem 排序的顺序?我一直在查看我的 web.config 并将它与我为一个项目的 web.config 进行了比较,该项目正在按照我认为应该的方式工作,但我找不到任何跳出我的东西。
可视化我在项目的内容树中看到的似乎给予子项排序优先级的内容:
parent - subitem sorting = created
child1 - created = 01012014, sortorder = 100
child2 - created = 02022014, sortorder = 0
Run Code Online (Sandbox Code Playgroud)
这可能是 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;
}
Run Code Online (Sandbox Code Playgroud)
相比之下,您可以查看指向 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;
}
Run Code Online (Sandbox Code Playgroud)