Пользовательский вид для RecentBlogPosts в Orchard - PullRequest
2 голосов
/ 01 апреля 2011

Я искал и пытался в течение 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>
}

Приведенный выше код был (в основном) из Бертран Ле Рой блог , за что я ему благодарен.

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Возможно, вы захотите попробовать функцию трассировки фигур в Orchard 1.1 (выйдет на следующей неделе). Вкладка «Модель» позволит вам копаться в объектах и ​​определять синтаксис для отображения практически всего.

1 голос
/ 02 апреля 2011

ContentItem - это элемент контента BlogPost , который содержит BlogPostPart (из пространства имен Orchard.Blogs.Models).Таким образом, вы можете использовать любые его свойства - извлеките ссылку на исходный код, который я предоставил выше.

Эта часть имеет свойство Text , которое возвращает Html из соответствующего BodyPart (который тоже прикреплен к типу BlogPost) под капотом.И кстати - не забудьте использовать @Html.Raw (part.Text) для отображения извлеченного содержимого.

Еще одна вещь - для облегчения жизни я бы предпочел приводить эти итерированные объекты к BlogPostPart для получения Intellisense:

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

HTH

...