В итоге я использовал пакет datefolders , который автоматически сортирует элементы новостей в правильную папку года и месяца на основе предварительно определенного поля даты, во многом как @ amelvin response . Преимущество папок с датами заключается в том, что это упрощает пользователю необходимость вручную сортировать свои статьи в нужную папку и поддерживать эту организацию. Они могут просто щелкнуть правой кнопкой мыши элемент контейнера новостей, создать статью, установить дату, и она просто появится в нужной папке. Кроме того, он меняет папку при изменении даты.
С точки зрения отображения архивов у меня был следующий код бритвы, где NewsListing
- это тип документа с новостями, а NewsItem
- тип документа с новостями:
Архив списка на боковой панели
<umbraco:Macro runat="server" language="cshtml">
@{
dynamic newsListingNode = Model.AncestorOrSelf(1).DescendantsOrSelf("NewsListing").First();
}
<div class="archive">
<ul>
@foreach (var newsYear in newsListingNode.Children)
{
foreach (var newsMonth in newsYear.Children)
{
@* Use format time to get the month string *@
dynamic dateLabel = umbraco.library.FormatDateTime(newsYear.Name + " " + newsMonth.Name + " 01", "MMMM yyyy");
<li><a href="@newsMonth.Url">@dateLabel»</a></li>
}
}
</ul>
</div>
</umbraco:Macro>
Страница архива месяца
<umbraco:Macro runat="server" language="cshtml">
@* Check the it is a month folder *@
@if ((@Model.NodeTypeAlias == "NewsDateFolder") &&
(@Model.Up().NodeTypeAlias == "NewsDateFolder") &&
(@Model.Up().Up().NodeTypeAlias == "NewsListing"))
{
dynamic newsMonth = Model;
dynamic newsYear = Model.Up();
dynamic dateLabel = umbraco.library.FormatDateTime(newsYear.Name + " " + newsMonth.Name + " 01", "MMMM yyyy");
<div class="news">
<h2>News archive: @dateLabel</h2>
@{
dynamic newsItems = Model.DescendantsOrSelf("NewsItem").OrderBy("sortDate desc");
}
@foreach(var newsItem in newsItems) {
<div class="block-content">
<h5><a href="@newsItem.Url">@newsItem.Name</a></h5>
<p>@newsItem.summaryText</p>
<a href="@newsItem.Url">more»</a>
</div>
}
</div>
}
</umbraco:Macro>