Cambia la vista de tus posts dinámicamente en BE.NET
Al Nyveldt, uno de los programadores principales de BlogEngine.NET, publicó un artículo sobre ¿Cómo hacer que la página principal de tu blog se vea diferente? (traducción semi-literal a su título).
En su artículo Al Nyveldt propone modificar el archivo PostView.ascx de nuestro ‘tema’ con el fin de agregar unas cuantas líneas de código que determinen si el artículo será servido a la página frontal o a la página de posts.
Recuerda que BlogEngine.NET lee este archivo para ‘renderear’ los posts, ya se para las listas (como la página principal) o para la vista de detalle (vista del post como tal).
Yo me permito mostrarte mi propia versión de este código que lo único que hace es considerar todos los casos en que los posts serán mostrados como listas.
protected enum PageStyle { List, Postpage };
protected PageStyle ViewStyle;
protected void Page_Load(object sender, EventArgs e)
{
string path = Request.RawUrl.ToLower();
if (path.LastIndexOf('/') > -1)
path = path.Substring(path.LastIndexOf('/') + 1);
if (path.StartsWith("default.aspx") || path == "" || Request.RawUrl.ToLower().Contains("/author/"))
{
ViewStyle = PageStyle.List;
}
else
{
ViewStyle = PageStyle.Postpage;
}
base.Page_Load(sender, e);
}
Bien, cuando el control PostView.ascx sea cargado el código anterior detectará si se está solicitando una página de lista de posts o un posts en particular. El caso elegido se almacena en ViewStyle.
<% if (ViewStyle != PageStyle.Postpage) { %>
<!-- Código HTML para las páginas de lista (página frontal) -->
<% } else { %>
<!-- Código HTML para la vista del post -->
<% } %>
El skin actual de este blog hace uso de esta técnica para cargar las vistas de los posts que van en listas. Por ejemplo, cuando se cargan los posts para listas no pego el ‘body’ del mismo. De este modo el cliente lo puede descargar a través de ajax bajo demando con jQuery. Otro ejemplo de esta aplicación es mi photo blog http://www.alfaku.net en el que las listas las muestro como grids.