martedì 16 giugno 2015

Creare un Reader RSS in una Partial View di Umbraco 7

Ci sono molti modi di creare ed includere un reader RSS in una pagina di Umbraco: usare un custom controller, usare delle marco XSL, ecc...

Ma se volessimo usare solamente una Partial View MVC senza sviluppare un controller custom?

Beh, è veramente semplice raggiungere questo obiettivo con solo pochissime righe di C#

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using System.ServiceModel
@using System.ServiceModel.Syndication
@using System.Xml
@{
 string url = "http://your_blog_rss_url";
 XmlReader reader = XmlReader.Create(url);
 SyndicationFeed feed = SyndicationFeed.Load(reader); 
 reader.Close(); 
}

@foreach(var feedItem in feed.Items)
{ 
 <div class="col-md-6">
  <article>
   <div class="date">
    <span class="day">@feedItem.PublishDate.Day</span>
    <span class="month">@GetMonthName(feedItems[i].PublishDate.Month)</span>
   </div>
   <h4 class="heading-primary"><a href="@feedItem.Links[4].Uri">@feedItems[i].Title.Text</a></h4>
   <p>@(feedItem.Summary.Text + "... ") <a href="@feedItem.Links[4].Uri" class="read-more">read more <i class="fa fa-angle-right"></i></a></p>
  </article>
 </div>
}

Come potete vedere, sono bastate alcune righe di codice ed abbiamo il nostro Reader RSS. A questo punto è necessario semplicemente includere questa partial view nella pagina che ci interessa per vedere il nostro feed RSS.
Ovviamente è possibile cambiare il layout, quello nell'emepio è solo quello che ho usato io per il mio progetto.

Solo 2 note:
  1. Io ho usato "feedItem.Links[4].Uri" per recuperare l'url del blog post, questo funziona se si usa blogger come hoster. Se invece utilizzate altre piattaforme di blogging, dovrete scorrervi la collection Links per scoprire dov'è l'url che vi serve.
  2. Il "@GetMonthName" è solamente un Helper che converte il "numero" del mese nel suo nome.

Nessun commento: