2011-05-12 68 views
1

我试图渲染的博客文章在此布局的列表:如何呈现Orchard CMS中博客帖子的各个部分(如标签)?

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

我试图渲染后的第一个自己,然后遍历其余项目使用博客文章汇总模板使它们。

一些问题在这里:

  1. 这是拉断 布局我试图达到或 我应该开始寻找到创建 一个模块的好方法?
  2. 我应该为我的特殊第一篇文章 渲染创建一个摘要 模板,我将如何去关于 那?
  3. 如果我继续使用相同的 路径,我该如何渲染零件,如标签 和postdate?

我有这个在我的主题至今: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) 

回答

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

+0

哦,这些类现在无处可去,你可能想将它们移动到新的列表形状,这是我忽视了这样做。 – 2011-05-13 01:13:42

相关问题