CULTURA

Publicaciones relacionadas con miniaturas en BlogEngine.net

Hoy veamos juntos cómo insertar una imagen (miniaturas) en las publicaciones relacionadas de BlogEngine.net como vista previa de las publicaciones.

Vamos a abrir el archivo RelatedPosts.cs presente en la carpeta App_Code / Controls y realice los siguientes pasos.

BlogEngine.net

Apoyamos la siguiente función Crear lista:

private void CreateList(IEnumerable<IPublishable> relatedPosts)
{
var sb = new StringBuilder();

const string LinkFormat = "<a href="{0}">{1}</a>";
const string DescriptionFormat = "<span>{0}</span>";
sb.Append("<div id="relatedPosts">");
sb.Append("<h3>+++</h3>");
sb.Append("<div>");

var count = 0;
foreach (var post in relatedPosts)
{
if (post != this.Item)
{
sb.Append(string.Format(LinkFormat, post.RelativeLink, HttpUtility.HtmlEncode(post.Title)));
if (this.ShowDescription)
{
var description = post.Description;
if (description != null && description.Length > this.DescriptionMaxLength)
{
description = string.Format("{0}...", description.Substring(0, this.DescriptionMaxLength));
}
if (String.IsNullOrEmpty(description))
{
var content = Utils.StripHtml(post.Content);
description = content.Length > this.DescriptionMaxLength
? string.Format("{0}...", content.Substring(0, this.DescriptionMaxLength))
: content;
}

sb.Append(string.Format(DescriptionFormat, description));
}

count++;
}

if (count == this.MaxResults)
{
break;
}
}
sb.Append("</div>");
sb.Append("</div>");
RelatedPostsCache[this.Item.Id] = sb.ToString();
}

Con esta nueva versión:

private void CreateList(IEnumerable<IPublishable> relatedPosts)
{
var sb = new StringBuilder();
			
string image = "<a href="{0}">{1}</a>";
const string LinkFormat = "<a href="{0}">{1}</a>";
const string DescriptionFormat = "<span>{0}</span>";
sb.Append("<div id="relatedPosts">");	
	
sb.Append("<h1>+++</h1>");
sb.Append("<br /><table><tr>");			
	           
   var count = 0;
foreach (var post in relatedPosts)
{
if (post != this.Item)
{
	     sb.Append("<td style="width:110px" valign="top">");		
sb.Append(string.Format(image,post.RelativeLink, getImage(true,post.Content,HttpUtility.HtmlEncode(post.Title))));
	     sb.Append(string.Format(LinkFormat, post.RelativeLink, HttpUtility.HtmlEncode(post.Title)));			
					
if (this.ShowDescription)
{
var description = post.Description;
if (description != null && description.Length > this.DescriptionMaxLength)
{
description = string.Format("{0}...", description.Substring(0, this.DescriptionMaxLength));
}

if (String.IsNullOrEmpty(description))
{
var content = Utils.StripHtml(post.Content);
description = content.Length > this.DescriptionMaxLength
? string.Format("{0}...", content.Substring(0, this.DescriptionMaxLength))
: content;
}

}

sb.Append("</td>");
count++;
}

if (count == this.MaxResults)
{
break;
}

sb.Append("</tr></table>");
sb.Append("</div>");
RelatedPostsCache.Add(this.Item.Id, sb.ToString());
}

Artículos Relacionados

Finalmente sumamos las dos funciones Obtener la imagen es GetSrc útil para insertar el nuestro Miniaturas entre las publicaciones relacionadas:

public string getImage(bool ShowExcerpt, string input, string Titolo)
{
if (!ShowExcerpt || input == null)
return "";

string pain = input;
string pattern = @"<img(.|n)+?>";
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(input, pattern,
System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Multiline);
if (m.Success)
{
string src = getSrc(m.Value);
string img = string.Format("<img width="95" height="88px" class="left" align='left' alt="" + Titolo + "" style="background:#F0F0F0; border:none; padding:5px; border-right:1px solid #ccc; border-bottom:1px solid #ccc;" {0}  />", src);
return img;
}
else
{
return "";
}
}


string getSrc(string input)
{
string pattern = "src=['|"](.+?)['|"]";

System.Text.RegularExpressions.Regex reImg = new System.Text.RegularExpressions.Regex(pattern,
System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Multiline);
System.Text.RegularExpressions.Match mImg = reImg.Match(input);

if (mImg.Success)
{
return mImg.Value;
}
return "";
}

En conclusión, hemos agregado la función Obtener la imagen en CreateList y reemplazó

con un formato tabular. Otro paso es intervenir en el expediente Post.aspx para actuar en la siguiente línea de código:

<blog:RelatedPosts runat="server" ID="related" MaxResults="5" ShowDescription="false" DescriptionMaxLength="100" Headline="Potrebbe interessarti anche:" Visible="false" /> >

Básicamente cambiamos el valor de MaxResults de 3 a 5 (este es el número de enlaces con imágenes que queremos que aparezcan entre las publicaciones relacionadas), establezca ShowDescription en falso e ingrese el valor Titular, útil para personalizar el título de publicaciones relacionadas: en nuestro caso «También te puede interesar:».

Espero no haberme olvidado de nada, de todas formas estoy adjuntando el archivo RelatedPosts.cs (10.08 kb) (Antes de reemplazarlo, siempre haga una copia de seguridad del original).

Hola al prox.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar