我正在尝试在umbraco中创建一个新闻档案,它将显示按月组织的新闻页面列表.每个页面都会显示该月新闻项的列表.
我已经按照教程创建了新闻项目,但我不确定如何创建档案.似乎没有任何参考在线进行此操作.当然,它是CMS的常见用例.
任何人有任何想法(如果需要编码,最好是razorscript)?
我最终使用了datefolders包,它根据预定义的日期字段自动将新闻项目分类到正确的年份和月份文件夹,就像@amelvin响应一样.日期文件夹的好处是它简化了用户必须手动将文章排序到正确的文件夹并维护该组织.他们只需右键单击新闻容器项,创建文章,设置日期,它就会出现在右侧文件夹中.此外,它会在更改日期时更改文件夹.
在档案的显示方面,我有以下剃刀代码,其中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>
Run Code Online (Sandbox Code Playgroud)
月份存档页面
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7153 次 |
| 最近记录: |