Cómo eliminar las metaetiquetas de título y descripción duplicadas en BlogEngine.net

    Con el fin de obtener una buena clasificación en los motores de búsqueda, Google sigue dando mucha importancia a las etiquetas de título y descripción.

    La estructura de los blogs de hoy se basa en la visualización dinámica de una lista de contenido representada en orden cronológico inverso.

    La lista de publicaciones, de hecho, se puede consultar navegando, a través de los enlaces de navegación, la Página de Inicio, la sección Categorías, Etiquetas y la lista de Meses, esto genera diferentes páginas de contenido pero con el mismo título y descripción con la consiguiente penalización. de parte de Google.



    Para encontrar una solución a este problema, debe actuar sobre el archivo default.aspx.cs de BlogEngine.Net, yendo a modificar el código y tratando de asignar un título único a cada página y a cada sección, categoría, inicio, etiqueta, etc., una descripción de referencia de no poca extensión, como Google también reporta como error las denominadas meta descripciones breves.

    Cómo eliminar las metaetiquetas de título y descripción duplicadas en BlogEngine.net

    Analicemos el código y veamos los cambios realizados.

    En cuanto a la página de inicio, tuve que personalizar la etiqueta del título para darle a cada página elegida dentro de default.aspx un título único:

     

    Page_Load vacío protegido (remitente del objeto, EventArgs e) {bool DescriptionAdded = false; if (Page.IsCallback) return; BlogEngine.Core.Page frontPage = BlogEngine.Core.Page.GetFrontPage (); if (Request.QueryString.Count == 0 && frontPage! = null) {Server.Transfer (Utils.RelativeWebRoot + "page.aspx? id =" + frontPage.Id); } else if (Request.RawUrl.ToLowerInvariant (). Contiene ("/ categoría /")) {DisplayCategories (); DescriptionAdded = verdadero; } else if (Request.RawUrl.ToLowerInvariant (). Contiene ("/ autor /")) {DisplayAuthors (); DescriptionAdded = verdadero; } else if (Request.RawUrl.ToLowerInvariant (). Contiene ("? tag =")) {DisplayTags (); DescriptionAdded = verdadero; } else if (Request.QueryString ["year"]! = null || Request.QueryString ["date"]! = null || Request.QueryString ["calendar"]! = null) {if (Request.RawUrl.Contains ("año =")) Redirigir (); else DisplayDateRange (); } else if (Request.QueryString ["apml"]! = null) {DisplayApmlFiltering (); } else {PostList1.ContentBy = ServingContentBy.AllContent; PostList1.Posts = Post.Posts.ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); if (! BlogSettings.Instance.UseBlogNameInPageTitles) Page.Title = BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; }} AddMetaKeywords (); if (! DescriptionAdded) base.AddMetaTag ("descripción", Server.HtmlEncode (BlogSettings.Instance.Description)); base.AddMetaTag ("autor", Server.HtmlEncode (BlogSettings.Instance.AuthorName)); }


    Para evitar duplicados de Título y Descripción, también intervine en las secciones Categorías, Etiquetas, Autores y Fecha.


    Esto es para lo que el código antiguo categorías:

     

    private void DisplayCategories () {if (! String.IsNullOrEmpty (Request.QueryString ["id"])) {Guid categoryId = new Guid (Request.QueryString ["id"]); PostList1.ContentBy = ServingContentBy.Category; PostList1.Posts = Post.GetPostsByCategory (categoryId) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); Page.Title = Category.GetCategory (categoryId) .Title;

     

    El nuevo código, por otro lado, nos permitirá con Base.AddMetaTag para personalizar la descripción según la categoría elegida y con la Título de la página, además del número de página elegido, para personalizar el título de cada página por la que nos desplazaremos. De esta forma evitaremos duplicados para la etiqueta de título y algunos duplicados menos para la etiqueta de descripción:

     

    private void DisplayCategories () {if (! String.IsNullOrEmpty (Request.QueryString ["id"])) {Guid categoryId = new Guid (Request.QueryString ["id"]); PostList1.ContentBy = ServingContentBy.Category; PostList1.Posts = Post.GetPostsByCategory (categoryId) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); Page.Title = Category.GetCategory (categoryId) .Title + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; } base.AddMetaTag ("descripción", "Dal Blog SoulTricks, un elenco de articulos que aprenden a la categoria" + Category.GetCategory (categoryId) + ""); }}

     

    Lo mismo ocurre con el código con respecto a Autores, los Etiquetas, Y el Mese e año elección:

     

    private void DisplayAuthors () {if (! string.IsNullOrEmpty (Request.QueryString ["nombre"])) {string autor = Server.UrlDecode (Request.QueryString ["nombre"]); PostList1.ContentBy = ServingContentBy.Author; PostList1.Posts = Post.GetPostsByAuthor (autor) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); Page.Title = "Gli articoli di" + Request.QueryString ["nombre"] + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; } base.AddMetaTag ("descripción", "Dal Blog SoulTricks, un elenco di tutti gli articoli scritti da" + Request.QueryString ["nombre"]); }} DisplayTags vacío privado () {if (! string.IsNullOrEmpty (Request.QueryString ["etiqueta"])) {PostList1.ContentBy = ServingContentBy.Tag; PostList1.Posts = Post.GetPostsByTag (Request.QueryString ["etiqueta"]. Substring (1)). ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); base.Title = "Todas las publicaciones etiquetadas '" + Request.QueryString ["etiqueta"]. Substring (1) + "'" + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; } base.AddMetaTag ("descripción", "Dal Blog di SoulTricks, un elenco de tutti gli articoli classificati con etiqueta" + Request.QueryString ["etiqueta"]. Substring (1) + ""); }} private void DisplayDateRange () {string year = Request.QueryString ["año"]; cadena mes = Request.QueryString ["mes"]; string specificDate = Request.QueryString ["fecha"]; if (! string.IsNullOrEmpty (año) &&! string.IsNullOrEmpty (mes)) {DateTime dateFrom = DateTime.Parse (año + "-" + mes + "-01", CultureInfo.InvariantCulture); DateTime dateTo = dateFrom.AddMonths (1) .AddMilliseconds (-1); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate (dateFrom, dateTo) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); Page.Title = dateFrom.ToString ("MMMM aaaa") + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; } base.AddMetaTag ("description", "Blog a carattere sociale with news dal web, aperto a tutti coloro che vogliono condividere un loro pensiero. "+ Título +" ");} else if (! String.IsNullOrEmpty (año)) {DateTime dateFrom = DateTime.Parse (year +" -01-01 ", CultureInfo.InvariantCulture); DateTime dateTo = dateFrom.AddYears (1 ) .AddMilliseconds (-1); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate (dateFrom, dateTo) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); ; Page.Title = dateFrom.ToString ("aaaa") + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["página"]! = "1" && Request.QueryString ["página"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["página"]; } base.AddMetaTag ("description", "Blog a carattere sociale with news dal web, aperto a tutti coloro che vogliono condividere un loro pensiero. "+ Título +" ");} else if (! String.IsNullOrEmpty (specificDate) && specificDate.Length == 10) {DateTime date = DateTime.Parse (specificDate, CultureInfo.InvariantCulture); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate (fecha, fecha) .ConvertAll (nuevo convertidor (delegado (Publicar p) {devolver p como IPublishable;})); ; Page.Title = date.ToString ("MMMM d. yyyy ") +" - "+ BlogSettings.Instance.Name; if (Request.QueryString [" page "]! =" 1 "&& Request.QueryString [" page "]! = null) {Page.Title + =" - Página "+ Request.QueryString [" página "];} base.AddMetaTag (" descripción "," Blog social con noticias de la web, abierto a todos aquellos que quieran compartir sus pensamientos. "+ Título +" ");} else if (! String.IsNullOrEmpty (Request.QueryString [" calendar "])) {calendar.Visible = true; PostList1.Visible = false; Page.Title = Server.HtmlEncode (Resources. tags.calendar) + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = " - Pagina "+ Request.QueryString [" page "];} base.AddMetaTag (" description "," Blog a carattere social con news dal web, aperto a tutti coloro che vogliono condividere un loro pensiero.


     


    Estos cambios en el archivo default.aspx.cs le permiten tener títulos únicos para cada página, mientras que en lo que respecta a la descripción, tiene la unicidad solo para las secciones individuales (Inicio, Categorías, Etiquetas, Autores, Fechas).

    Con algunos cambios más también es posible personalizar la descripción de cada página perteneciente a los apartados indicados, pero con las sugerencias propuestas ya podemos conseguir aquellas mejoras que a Google sin duda le gustaría.


    Este es el nuevo archivo comprimido de default.aspx.cs (11.46 kb) para reemplazar el que ya tienes en la raíz de tu blog (siempre haz primero una copia de seguridad del archivo existente).

    Atención porque la solución propuesta ha sido probada con BlogEngine.net 2.5

    Hasta la próxima

    Añade un comentario de Cómo eliminar las metaetiquetas de título y descripción duplicadas en BlogEngine.net
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.