如何在Orchard CMS中呈现博客文章的各个部分(如标签)?

时间:2011-05-12 17:01:40

标签: asp.net-mvc-3 orchardcms

我正在尝试在此布局中呈现博客帖子列表:

[first post - special summary]
[second post][third post][fourth post]
[pager]

我正在尝试自己渲染第一篇文章,然后使用博客文章摘要模板循环显示其余项目。

这里有很多问题:

  1. 这是一个很好的方式来拉开 布局我正在努力实现或 我应该开始研究创造 一个模块?
  2. 我应该创建摘要吗? 我特别的第一篇文章的模板 渲染,我将如何进行 那?
  3. 如果我继续下去的话 路径如何渲染像标签之类的部件 和后期?
  4. 到目前为止,我的主题是: Parts.Blogs.BlogPost.List-url-blog.cshtml

    @using Orchard.Blogs.Extensions;
    @using Orchard.Blogs.Models;
    @using Orchard.ContentManagement;
    @using Orchard.Utility.Extensions;
    @{
        IEnumerable<dynamic> blogPosts = Model.ContentItems;
        Model.ContentItems.Classes.Add("content-items");
        Model.ContentItems.Classes.Add("blog-posts");
    
        var firstPost = blogPosts.FirstOrDefault();
        //BlogPart blog = (BlogPart)firstPost.Get(typeof(BlogPart));
    
    }
    <h1>@firstPost.Title</h1>
    by <span>@firstPost.ContentItem.CommonPart.Owner.NormalizedUserName</span>
    
    @* How do i render tags using the tags part template? *@
    
    @Display(firstPost.Tags) 
    @Display(firstPost.Parts_Tags_ShowTags)
    @Display(firstPost.TagsPart) 
    @Display(firstPost.ContentItem.TagsPart)
    @Display(firstPost.ContentItem.TagsPart.ContentItem)
    
    @* none of the above work *@
    
    <hr />
    <ul class="content-items">
        @foreach (var post in blogPosts.Skip(1))
        {
            <li class="content-item-summary">
                @Display(post)
            </li>
        }
    </ul>
    

    奖励积分 - 为什么我不能这样做:

    @Display(blogPosts.Skip(1))
    

    但我能做到

    @Display(blogPosts)
    

1 个答案:

答案 0 :(得分:3)

哦,嗨。试试这个:

@using Orchard.Blogs.Extensions;
@using Orchard.Blogs.Models;
@using Orchard.ContentManagement;
@using Orchard.Utility.Extensions;
@{
    IEnumerable<dynamic> blogPosts = Model.ContentItems;
    Model.ContentItems.Classes.Add("content-items");
    Model.ContentItems.Classes.Add("blog-posts");

    var firstPost = blogPosts.FirstOrDefault();
    var otherPosts = blogPosts.Skip(1).ToList();
}
<h1>@firstPost.Title</h1>
by <span>@firstPost.ContentItem.CommonPart.Owner.NormalizedUserName</span>

@Display(New.MyTagShape(Tags: firstPost.ContentItem.TagsPart.CurrentTags))

<hr />
@Display(New.List().AddRange(otherPosts))

然后这是MyTagShape.cshtml的代码:

Here are your tags:
<ul>
@foreach (var tag in Model.Tags) {
    <li>@tag.TagName</li>
}
</ul>

在我的机器上运行。 但正如我在论坛上所说的那样,您可能希望自定义摘要模板而不是整个列表。

编辑:以下是为第一项创建不同模板的方法:http://weblogs.asp.net/bleroy/archive/2011/05/23/orchard-list-customization-first-item-template.aspx