Asp.net mvc Orchard CMS最近的博客文章小部件替代视图

Asp.net mvc Orchard CMS最近的博客文章小部件替代视图,asp.net-mvc,asp.net-mvc-3,orchardcms,Asp.net Mvc,Asp.net Mvc 3,Orchardcms,我是Orchard CMS和MVC的新手,请原谅我的无知。我做了一次搜索,没有发现任何明显相关的 在我的Orchard网站的一个页脚四区中,我想按标题显示最近的5篇博客文章。目前,它显示的标题,帖子,标签等都在其未格式化的状态(我还没有风格的博客) 使用跟踪工具,我创建了一个名为 Parts.Blogs.RecentBlogPosts 然而,这一观点的唯一内容是 @Display(Model.ContentItems) 与我为之编辑备用视图的其他已安装小部件不同,它没有给我任何东西来创建我需

我是Orchard CMS和MVC的新手,请原谅我的无知。我做了一次搜索,没有发现任何明显相关的

在我的Orchard网站的一个页脚四区中,我想按标题显示最近的5篇博客文章。目前,它显示的标题,帖子,标签等都在其未格式化的状态(我还没有风格的博客)

使用跟踪工具,我创建了一个名为

Parts.Blogs.RecentBlogPosts
然而,这一观点的唯一内容是

@Display(Model.ContentItems)
与我为之编辑备用视图的其他已安装小部件不同,它没有给我任何东西来创建我需要创建的布局

我是否选择了错误的形状/视图,或者我是否需要进行一些编码


正如我所说,我对MVC和Orchard都是新手,但我非常渴望学习。我们将一如既往地感谢您在这方面提供的任何帮助。

Parts.Blogs.RecentBlogPosts视图显示显示BlogPost内容项的
Parts\u Blogs\u BlogPost\u List
形状(
Parts.Blogs.BlogPost.List.cshtml
)。(您可以在RecentBlogPostsPartDriver.cs中看到它)。BlogPost内容类型由标题部分和主体部分组成,它们有自己的形状和视图(或Orchard术语中的模板)。 因此,要对这些模板进行一些更正,您可以尝试交替使用
Parts\u Blogs\u BlogPost\u List
Parts\u Common\u Body\u Summary
和其他形状

请特别参阅以下说明:

  • 交替
  • 访问和渲染形状

  • 这确实值得一个解释。这里的Model.ContentItems实际上是一个列表形状。当您使用它调用Display时,它将为列表形状(也可以是备用形状)找到最合适的模板并对其进行渲染。默认列表呈现仅呈现UL/LI,在每个LI调用中显示列表元素的单个内容形状,但使用摘要显示类型。当这些内容依次呈现时,系统将定位最相关的内容模板,该模板通常呈现一组区域,在这些区域内,零件将根据放置位置进行推送。因此,在相当多的嵌套级别中,有很多事情正在进行。 尽管如此,在任何层面上都有可能覆盖整个事件。困难在于知道该放什么。最简单的方法是在形状跟踪中探索模型,看看可以使用什么。 本文介绍了如何在特定情况下覆盖列表呈现并完全接管它:

    我在尝试区分最近的博客文章布局和博客摘要文章时遇到了完全相同的问题。我遵循这个概念

    并创建Parts.Blogs.RecentBlogPosts。然后,当使用形状跟踪工具在模型中导航时,我找到了我要查找的所有元素,并将它们放入我的新形状中。我知道我的方法可能不是最合适的,但它是有效的。也许这将是需要做类似事情的人的起点:

    <div class="last-news">
    <ul>
    @foreach (var item in Model.ContentItems.ContentItems.Items)
    {
        var max = (item.ContentItem.BodyPart.Text.Length > 100) ? 100 : item.ContentItem.BodyPart.Text.Length;
    
        <li><header>@Display(item.ContentItem.CommonPart.PublishedUtc.ToShortDateString())</header></li>
        <li><h1><a href="/@item.ContentItem.Parts[5].Path">@Display(item.ContentItem.TitlePart.Title)</a></h1></li>
        <li>@Display(Html.Raw(item.ContentItem.BodyPart.Text.Substring(0, max)))</li>
    }
    </ul>
    </div>
    
    
    
      @foreach(Model.ContentItems.ContentItems.Items中的变量项) { var max=(item.ContentItem.BodyPart.Text.Length>100)?100:item.ContentItem.BodyPart.Text.Length;
    • @显示(item.ContentItem.CommonPart.PublishedUtc.ToSortDateString())
    • @显示(Html.Raw(item.ContentItem.BodyPart.Text.Substring(0,max)))
    • }

    谢谢你的回复,但我还是不明白。我可以很容易地为twitter小部件创建一个替代程序。但这真的没有任何意义。不管怎样,谢谢。好吧,我想我有进展了。但是根据我目前所走的路线,为了在提要中只获取标题,我必须为所有其他部分创建空的替代项。这似乎有点错误。您可以通过在placement.info文件中添加以下内容来隐藏日志摘要:
    。当你的模块/主题打开时,这将在任何时候删除该形状的显示。但这也将从博客摘要页面中删除它??我只想从我放在每页页脚的小部件中删除这些。我的目标是让这个小部件显示最近3或4篇博客文章的标题。啊!伟大的伯特兰。我很荣幸能得到你的帮助。从我在乌节的短暂时间里,我清楚地看到你是一个有见识的人你太好了。真正的问题是,这有帮助吗?是的,我设法很快把你的样品变成我需要的布局。不幸的是,时间太晚了,所以我还没有真正看代码本身,也没有看你出色的解释。不过,毫无疑问,我明天会这样做。我非常渴望了解正在发生的事情,以便能学到更多。谢谢你的帮助,我花了很多时间和精力(通常)来解释Orchard是如何工作的。除了博客摘要页面,然后是实际的博客帖子页面,我该如何做同样的事情呢。再一次,我能找到的似乎只是单个区域元素。这让我处于一种类似的情况,我需要重新安排事情并进行修改,这需要我控制顶层形状。Bertrand Le Royth非常感谢任何指示移动形状的标准方法是放置。如果出于任何原因不想使用placement,请阅读以下内容: