果园替代形状模板不显示值

时间:2012-12-28 00:13:37

标签: orchardcms

我是Orchard的新手,并观看过Pluralsight“Orchard Fundamentals”和“Advanced Orchard”教程。它是一个很好的平台,但是我很难绕过一些事情。

我想在主页上创建一个博客展示横幅广告,用于轮换网站上的博文。我将HTML切片并在HTML模板上运行。横幅看起来像这样:

http://arerra.com/news-slideshow.jpg

到目前为止,我已完成以下工作:

  1. 我创建了一个名为“文章”的博客,并在那里放置了一个帖子进行测试。

  2. 添加了一个名为“ArticleList”的图层,我为“最近的博客帖子”添加了一个小工具

  3. 我在主题中为主页创建了一个名为“Layout-Url-HomePage.cshtml”的自定义布局。

  4. 在我的主题“视图”文件夹中,我创建了一个名为“Widget.Wrapper.cshtml”的文件,其中只有@Display(Model.Child),以便从窗口小部件中全局删除<article><header/><footer /><article>标记。

  5. 在“视图&gt;部件&gt; Blogs.RecentBlogPosts.cshtml”中添加了一个文件来控制我的形状布局。代码如下:

    @using Orchard.ContentManagement;
    @{
        IEnumerable<object> blogPosts = Model.ContentItems.ContentItems;
    }
    
    @if (blogPosts != null) {
    <div class="container news-slider">
        <ul class="slide-images">
            @foreach (dynamic post in blogPosts) {
                 string title = post.Title;
                 ContentItem item = post.ContentItem;
    
                 <img src="/Themes/MountainWestHoops/Content/img/placeholder-700x380.jpg" alt="@title" class="active" />
            }
        </ul>
    
        @foreach (dynamic post in blogPosts) {
            string title = post.Title;
            string body = post.Body;
            ContentItem item = post.ContentItem;
    
            <div class="featured-story threeD active">
                <h1>@title</h1>
                <p>@body @Html.ItemDisplayLink("READ MORE", item)</p>
            </div>
        }
    
        <aside>
            <ul class="tabs">
                @foreach (dynamic post in blogPosts) {
                    string title = post.Title;
                    string url = post.Url;
                    ContentItem item = post.ContentItem;
    
                    <li><a href="@url"><h3>@title</h3></a></li>
                }
            </ul>
    
            <div class="ad-three-day-trial">
                <a href=""><img src="/Themes/Content/img/placeholder-260x190.gif" /></a>
            </div>
        </aside>
    </div>
    }    
    
  6. 我的HTML正常呈现,但我指定的值都没有出现。

  7. 我正在使用“Shape Tracer”模块来查看正在使用的模板。有趣的是,@ Html.ItemDisplayLink(“READ MORE”,item)正在呈现文章的URL,如果我用字符串标题替换“READ MORE”,则标题会正确呈现。

  8. 我在这里做错了导致字符串无法显示?我错过了更大的观点并误解了基本面吗?教程似乎说你可以简单地移动部件,但在这种情况下,我需要有非常特定的标记才能使用这个滑块。

1 个答案:

答案 0 :(得分:1)

好像您的来源是http://weblogs.asp.net/bleroy/archive/2011/03/27/taking-over-list-rendering-in-orchard.aspx

这是一个相当古老的帖子,从那时起,标题的处理方式发生了变化。

DisplayLink可以正常工作,因为这里唯一正确的属性是post.ContentItem,这就是API所需要的。另一方面,post.Titlepost.Body很可能为空,这就是为什么你什么也看不见的原因。要访问标题,您可以使用post.ContentItem.TitlePart.Title并获取正文post.ContentItem.BodyPart.Text