2

私のホームページに表示されるRecentBlogPostsコンテンツタイプのビューを変更するために、2日間検索して試しました。投稿からタイトルとフレーズを表示したい。

各投稿のタイトルを表示するビューを見つけることができましたが、モデル内の他の部分の名前やテキストの抽出方法を理解できませんでした。

助けていただければ幸いです。

@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 Royブログからのもので、彼に感謝します。

4

2 に答える 2

1

Orchard 1.1の形状トレース機能を試してみることをお勧めします(来週予定)。そこにある[モデル]タブを使用すると、オブジェクトを掘り下げて構文を理解し、ほとんどすべてのものを表示できます。

于 2011-04-06T17:58:13.767 に答える
1

ContentItem は、BlogPostPart (Orchard.Blogs.Models 名前空間から)を含むBlogPostコンテンツ アイテムです。したがって、それが持つ任意のプロパティを使用できます-上記で提供したソースコードへのリンクをチェックアウトしてください。

このパーツにはTextプロパティがあり、内部で対応するBodyPart (BlogPost タイプもアタッチされています) から Html を返します。ところで - @Html.Raw(part.Text)を使用して、取得したコンテンツを表示することを忘れないでください。

もう 1 つ - 生活を楽にするために、反復オブジェクトをBlogPostPartにキャストして、Intellisense を取得します。

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

HTH

于 2011-04-02T14:18:28.247 に答える