My Body Summary template for Orchard

Posted by Bertrand Le Roy on ASP.net Weblogs See other posts from ASP.net Weblogs or by Bertrand Le Roy
Published on Mon, 02 Jul 2012 02:25:00 GMT Indexed on 2012/07/02 3:16 UTC
Read the original article Hit count: 449

Filed under:
|

(c) Bertrand Le Roy 2012By default, when Orchard displays a content item such as a blog post in a list, it uses a very basic summary template that removes all markup and then extracts the first 200 characters. Removing the markup has the unfortunate effect of removing all styles and images, in particular the image I like to add to the beginning of my posts.

Fortunately, overriding templates in Orchard is a piece of cake. Here is the Common.Body.Summary.cshtml file that I drop into the Views/Parts folder of pretty much all Orchard themes I build:

@{ 
    Orchard.ContentManagement.ContentItem contentItem =
        Model.ContentPart.ContentItem;
    var bodyHtml = Model.Html.ToString();
    var more = bodyHtml.IndexOf("<!--more-->");
    if (more != -1) {
        bodyHtml = bodyHtml.Substring(0, more);
    }
    else {
        var firstP = bodyHtml.IndexOf("<p>");
        var firstSlashP = bodyHtml.IndexOf("</p>");
        if (firstP >=0 && firstSlashP > firstP) {
            bodyHtml = bodyHtml.Substring(firstP, firstSlashP + 4 - firstP);
        }
    }
    var body = new HtmlString(bodyHtml); 
}
<p>@body</p>
<p>@Html.ItemDisplayLink(T("Read more...").ToString(), contentItem)</p>

This template does not remove any tags, but instead looks for an HTML comment delimiting the end of the post’s intro:

<!--more-->

This is the same convention that is being used in WordPress, and it’s easy to add from the source view in TinyMCE or Live Writer.

If such a comment is not found, the template will extract the first paragraph (delimited by <p> and </p> tags) as the summary.

And if it finds neither, it will use the whole post.

The template also adds a localizable link to the full post.

© ASP.net Weblogs or respective owner

Related posts about ASP.NET

Related posts about Orchard