Orchard中最近的博客帖子的自定义视图

时间:2011-04-01 14:05:30

标签: .net asp.net asp.net-mvc razor orchardcms

我一直在搜索并尝试2天更改我的主页上显示的RecentBlogPosts内容类型的视图。我想在帖子中显示标题和短语。

我设法找到一个显示每个帖子标题的视图,但我还没有设法弄清楚模型中其他部分的名称或如何提取文本。

非常感谢帮助!

@using Orchard.ContentManagement;
@using Orchard.Core.Routable.Models;
@using Contrib.Hyperlink.Fields;
@{


  IEnumerable<object> blogPosts = Model.ContentItems.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1)
{
    <p>@T("No posts.")</p>
}
else
{
   <div class="content-items">
   @foreach (dynamic post in blogPosts)
   {
            string title = post.Title;
            ContentItem item = post.ContentItem;

   <div class="blogpost" style="width: 300px; padding-left: 15px; float: left;">
         <p class="content-item-summary">@Html.ItemDisplayLink(title, item)</p>
   </div>

   }
   </div>
}

以上代码(主要)来自Bertrand Le Royblog,我感谢他。

2 个答案:

答案 0 :(得分:1)

ContentItem是 BlogPost 内容项,其中包含BlogPostPart(来自Orchard.Blogs.Models命名空间)。所以你可以使用它拥有的任何属性 - 检查我上面提供的源代码的链接。

此部分具有文字属性,该属性从相应的 BodyPart (BlogPost类型已附加)中返回Html。 顺便说一句 - 记得使用 @ Html.Raw(part.Text)来显示提取的内容。

还有一件事 - 为了让生活更轻松,我宁愿将这些迭代对象强制转换为 BlogPostPart 来获取智能感知:

@foreach (var post in blogPosts.Select(p => ((IContent)p.ContentItem).As<BlogPostPart>())) 
{ 
    ... 
}

HTH

答案 1 :(得分:1)

您可能想尝试Orchard 1.1中的形状跟踪功能(下周到期)。那里的模型选项卡将使您能够深入了解对象并找出显示几乎所有内容的语法。