Lo user control PostView.ascx
ha il compito di occuparsi del rendering di un singolo post. Esso viene utilizzato per la lista dei post nella pagina principale, e quindi verrà ripetuto per il numero di volte come impostato nei setting (il valore di default è 10
). Inoltre definisce la visualizzazione del singolo post nella pagina di dettaglio.
Per accedere alle informazioni che si potranno visualizzare, BlogEngine mette a disposizione alcuni oggetti e funzioni:
Oggetto/funzione | Codice |
---|---|
Autore del post | <%=Post.Author %> |
Titolo | <%=Post.Title %> |
Contenuto del post | <%=Post.Content%> |
Data di creazione | <%=Post.DateCreated.ToString("d. MMMM yyyy HH:mm") %> |
PermaLink | <%=Post.PermaLink %> |
Link relativo al post | <%=Post.RelativeLink %> |
Categorie a cui appartiene il post | <%=CategoryLinks(" | ") %> |
Link al feed dei commenti | <%=CommentFeed %> |
Rating | <%=Rating %> |
Tag associate al post | <%=TagLinks(", ") %> |
Quello che si dovrà fare è creare un nuovo user control ereditando dalla classe BlogEngine.Core.Web.Controls.PostViewBase
. Così si avrà accesso alle proprietà e metodi sopra elencati. All'interno del controllo andrà inserita solamente la porzione di codice html che BlogEngine dovrà utilizzare per renderizzare i post, come l'esempio che segue:
<%@ Control Language="C#" AutoEventWireup="true" EnableViewState="false" Inherits="BlogEngine.Core.Web.Controls.PostViewBase" %> <div class="post xfolkentry"> <h2><a class="postheader taggedlink" href="<%=Post.RelativeLink %>"><%=Post.Title %></a></h2> <span class="author">by <a href="<%=VirtualPathUtility.ToAbsolute("~/") + "author/" + Post.Author %>.aspx"><%=Post.Author %></a></span> <span class="pubDate"><%=Post.DateCreated.ToShortDateString() %></span> <div class="entry"><asp:PlaceHolder ID="BodyContent" runat="server" /></div> <div class="postfooter"> Tags: <%=TagLinks(", ") %><br /> Categories: <%=CategoryLinks(" | ") %><br /> </div> <p>| <a href="#top">To the top </a> |</p> </div>
Lo usercontrol CommentView.ascx
si occupa della visualizzazione di un singolo commento, e verrà utilizzato nella pagina di dettaglio di un post automaticamente ripetuto per il numero di commenti presenti.
Anche in questo caso, si deve creare un nuovo user control ereditando da una classe dell'engine. In questo caso si tratta della classe BlogEngine.Core.Web.Controls.CommentViewBase
che permette l'accesso a proprietà e metodi riguardanti per l'appunto i commenti.
In questo controllo BlogEngine ci mette a disposizione la possibilità di visualizzare l'avatar per gli utenti che hanno scritto un commento e hanno il loro profilo su gravatar attivo, ed il tutto richiamando la funzione Gravatar presente nella classe da cui abbiamo ereditato lo user control appena creato.
<%@ Control Language="C#" EnableViewState="False" Inherits="BlogEngine.Core.Web.Controls.CommentViewBase" %> <div id="id_<%=Comment.Id %>" class="comment<%= Post.Author.Equals(Comment.Author, StringComparison.OrdinalIgnoreCase) ? " self" : "" %>"> <p class="date"><%= Comment.DateCreated.ToString("MMMM d. yyyy HH:mm") %></p> <p class="gravatar"><%= Gravatar(80)%></p> <p class="content"><%= Text%></p> <p class="author"> <%= Comment.Website != null ? "<a href="" + Comment.Website + "">" + Comment.Author + "</a>" : Comment.Author %> <%= AdminLinks %> </p> </div>
Terminata la realizzazione del tema, non rimane altro che copiarlo all'interno della cartella themes
di BlogEngine, e successivamente selezionarlo dall'area amministrazione del blog in modo da poterlo applicare e utilizzare.