如何在umbraco中创建新闻存档?
我正试图在umbraco创建一个新闻档案,在那里它将显示按月份组织的新闻页面列表。每页都会显示当月新闻的列表 我已经遵循了,但我不确定如何创建存档。似乎也没有任何参考资料在网上做这件事。当然,这是CMS的常见用例如何在umbraco中创建新闻存档?,umbraco,Umbraco,我正试图在umbraco创建一个新闻档案,在那里它将显示按月份组织的新闻页面列表。每页都会显示当月新闻的列表 我已经遵循了,但我不确定如何创建存档。似乎也没有任何参考资料在网上做这件事。当然,这是CMS的常见用例 有人有什么想法吗(如果需要编码,最好是在razorscript中)?Umbraco中最明显的解决方案是在“内容”部分安排文件夹结构,以匹配您希望站点安排项目的方式,然后使用简单的xsl转换来构建索引页面 编码两个模板(“设置”部分),一个用于显示每个月的索引,另一个用于显示单个文章 因
有人有什么想法吗(如果需要编码,最好是在razorscript中)?Umbraco中最明显的解决方案是在“内容”部分安排文件夹结构,以匹配您希望站点安排项目的方式,然后使用简单的xsl转换来构建索引页面 编码两个模板(“设置”部分),一个用于显示每个月的索引,另一个用于显示单个文章 因此,文件夹结构如下:
> Content
> |--Home
> |--2011
> |--01 January
> |--News article 1
> |--News article 2
> |--News article 3
> |--News article 4
> |--02 February
> |--News article 5
> |--News article 6
> |--News article 7
然后使用一些简单的xsl作为宏添加到索引模板(类似于以下内容)来运行新闻文章(我是从umbNewsListItems.xslt获得的,我认为它来自新闻示例站点):
张贴:
我最终使用了这个软件包,它会根据预定义的日期字段自动将新闻条目排序到正确的年和月文件夹中,就像这样。datefolders的好处在于,它简化了用户必须手动将其文章排序到正确的文件夹并维护该组织的过程。他们只需右键单击新闻容器项,创建文章,设置日期,它就会显示在正确的文件夹中。此外,它还会在日期更改时更改文件夹
关于档案的显示,我有以下razor代码,NewsListing
是新闻项目列表文档类型,NewsItem
是新闻项目文档类型:
在侧边栏中归档列表
@{
dynamic newsListingNode=Model.AncestorOrSelf(1).genderantsorself(“新闻列表”).First();
}
@foreach(newsListingNode.Children中的var newswear)
{
foreach(新闻年中的var newsMonth.Children)
{
@*使用格式时间获取月份字符串*@
动态日期标签=umbraco.library.FormatDateTime(newswear.Name+“”+newsnooth.Name+“01”、“MMMM-yyyy”);
}
}
月份档案页
@*检查“它是一个月”文件夹*@
@如果((@Model.NodeTypeAlias==“NewsDateFolder”)&&
(@Model.Up().NodeTypeAlias==“NewsDateFolder”)&&
(@Model.Up()
{
动态新闻月=模型;
动态新闻年=Model.Up();
动态日期标签=umbraco.library.FormatDateTime(newswear.Name+“”+newsnooth.Name+“01”、“MMMM-yyyy”);
新闻档案:@dateLabel
@{
动态新闻项=Model.degenantsorself(“新闻项”).OrderBy(“sortDate desc”);
}
@foreach(新闻项中的var新闻项){
@newsItem.summaryText
}
}
这似乎是一个存档:,但尚未尝试。
<xsl:template match="/">
<!-- The fun starts here -->
<div class="newsList">
<xsl:for-each select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1']">
<xsl:sort select="@updateDate" order="ascending" />
<h3 class="headline"> <a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</h3>
<small class="meta">Posted: <xsl:value-of select="umbraco.library:LongDate(@updateDate, true(), ' - ')"/></small><br/>
<p class="introduction">
<xsl:value-of select="umbraco.library:ReplaceLineBreaks(introduction)" disable-output-escaping="yes"/>
</p>
</xsl:for-each>
</div>
</xsl:template>
<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>