根据星期几对 Sitecore 中的 'Days' 项进行排序
Sort 'Days' Items in Sitecore according to days of week
有什么方法可以根据星期几对以下项目进行排序。
在 C# 中我可以这样做:
string [] initialArray = {"Friday", "Monday", ... } ;
string [] sortedArray = initialArray.OrderBy(s => Enum.Parse(typeof(DayOfWeek), s)).ToArray() ;
但我不知道如何使用 Sitecore 实现这种功能。
请查看后续文章:
http://firebreaksice.com/how-to-sort-sitecore-items-in-the-content-editor/
http://sitecore.alexiasoft.nl/2009/08/04/sorting-sitecore-items/
http://sitecoreblog.blogspot.in/2010/11/change-default-subitems-sort-order.html
如果您真正关心的是在前端显示排序的日期,而不管它们在内容编辑器中是如何组织的,那么只需在显示它们之前用代码对它们进行排序,例如
using System.Linq;
var openingHours = Sitecore.Context.Item.Children
.OrderBy(s => Enum.Parse(typeof(DayOfWeek), s.DisplayName));
如果您想在内容编辑器中对它们进行排序,则需要创建一个自定义排序器。 Sitecore Climber 提供了链接,但对于这个具体示例,您可以使用:
using Sitecore.Data.Comparers;
using Sitecore.Data.Items;
public class DayOfWeekComparer : Comparer
{
protected override int DoCompare(Item item1, Item item2)
{
var x = (int)Enum.Parse(typeof(DayOfWeek), item1.DisplayName);
var y = (int)Enum.Parse(typeof(DayOfWeek), item2.DisplayName);
return x.CompareTo(y);
}
}
然后在 core
数据库中,在 /sitecore/system/Settings/Subitems Sorting
下创建项目类型 /sitecore/templates/System/Child Sorting
的项目,并将类型设置为您的 class.
您应该在模板的标准值上设置子项排序。在本例中,您似乎有一个简单的文件夹模板,因此您需要为您的 Opening Hours 文件夹创建一个更具体的模板。即便如此,用户仍然可以决定重新排序项目或更改该文件夹的默认排序。强制输出的唯一保证方法是在渲染之前进行排序,即代码的第一位。
有什么方法可以根据星期几对以下项目进行排序。
在 C# 中我可以这样做:
string [] initialArray = {"Friday", "Monday", ... } ;
string [] sortedArray = initialArray.OrderBy(s => Enum.Parse(typeof(DayOfWeek), s)).ToArray() ;
但我不知道如何使用 Sitecore 实现这种功能。
请查看后续文章:
http://firebreaksice.com/how-to-sort-sitecore-items-in-the-content-editor/
http://sitecore.alexiasoft.nl/2009/08/04/sorting-sitecore-items/
http://sitecoreblog.blogspot.in/2010/11/change-default-subitems-sort-order.html
如果您真正关心的是在前端显示排序的日期,而不管它们在内容编辑器中是如何组织的,那么只需在显示它们之前用代码对它们进行排序,例如
using System.Linq;
var openingHours = Sitecore.Context.Item.Children
.OrderBy(s => Enum.Parse(typeof(DayOfWeek), s.DisplayName));
如果您想在内容编辑器中对它们进行排序,则需要创建一个自定义排序器。 Sitecore Climber 提供了链接,但对于这个具体示例,您可以使用:
using Sitecore.Data.Comparers;
using Sitecore.Data.Items;
public class DayOfWeekComparer : Comparer
{
protected override int DoCompare(Item item1, Item item2)
{
var x = (int)Enum.Parse(typeof(DayOfWeek), item1.DisplayName);
var y = (int)Enum.Parse(typeof(DayOfWeek), item2.DisplayName);
return x.CompareTo(y);
}
}
然后在 core
数据库中,在 /sitecore/system/Settings/Subitems Sorting
下创建项目类型 /sitecore/templates/System/Child Sorting
的项目,并将类型设置为您的 class.
您应该在模板的标准值上设置子项排序。在本例中,您似乎有一个简单的文件夹模板,因此您需要为您的 Opening Hours 文件夹创建一个更具体的模板。即便如此,用户仍然可以决定重新排序项目或更改该文件夹的默认排序。强制输出的唯一保证方法是在渲染之前进行排序,即代码的第一位。