Como remover títulos duplicados e meta tags de descrição no BlogEngine.net

    Para fins de uma boa classificação nos motores de busca, o Google continua a dar muita importância às tags de título e descrição.

    A estrutura dos Blogs hoje é baseada na exibição dinâmica de uma lista de conteúdo representada em ordem cronológica reversa.

    A lista de posts, aliás, pode ser consultada navegando, através dos links de navegação, a Home Page, a seção Categorias, Tags e a lista de Meses, isto gera páginas diferentes em termos de conteúdo, mas com o mesmo título e descrição com consequente penalização por parte do Google.



    Para encontrar uma solução para este problema, você precisa agir sobre o arquivo default.aspx.cs do BlogEngine.Net, vai modificar o código e tentar atribuir um título único a cada página e a cada seção, categoria, página inicial, tag, etc., uma descrição de referência de comprimento não curto, pois o Google também relata como um erro as chamadas meta descrições curtas.

    Como remover títulos duplicados e meta tags de descrição no BlogEngine.net

    Vamos analisar o código e ver as alterações feitas.

    Quanto à página inicial, tive que personalizar a tag de título para dar a cada página escolhida no default.aspx um título exclusivo:

     

    protegido void Page_Load (remetente do 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 (). Contains ("/ category /")) {DisplayCategories (); Description Added = true; } else if (Request.RawUrl.ToLowerInvariant (). Contains ("/ author /")) {DisplayAuthors (); Description Added = true; } else if (Request.RawUrl.ToLowerInvariant (). Contains ("? tag =")) {DisplayTags (); Description Added = true; } else if (Request.QueryString ["year"]! = null || Request.QueryString ["date"]! = null || Request.QueryString ["calendar"]! = null) {if (Request.RawUrl.Contains ("ano =")) Redirecionar (); else DisplayDateRange (); } else if (Request.QueryString ["apml"]! = null) {DisplayApmlFiltering (); } else {PostList1.ContentBy = ServingContentBy.AllContent; PostList1.Posts = Post.Posts.ConvertAll (novo conversor (delegar (Post p) {return p as IPublishable;})); if (! BlogSettings.Instance.UseBlogNameInPageTitles) Page.Title = BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; }} AddMetaKeywords (); if (! DescriptionAdded) base.AddMetaTag ("description", Server.HtmlEncode (BlogSettings.Instance.Description)); base.AddMetaTag ("autor", Server.HtmlEncode (BlogSettings.Instance.AuthorName)); }


    Para evitar duplicatas de Título e Descrição, também intervim nas seções Categorias, Tags, Autores e Data.


    Era assim que o código antigo era em relação Categorias:

     

    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 (novo conversor (delegar (Post p) {return p as IPublishable;})); Page.Title = Category.GetCategory (categoryId) .Title;

     

    O novo código, por outro lado, nos permitirá com Base.AddMetaTag personalizar a descrição de acordo com a categoria escolhida e com o Título da página, além do número da página escolhida, para personalizar o título de cada página que vamos rolar. Dessa forma, evitaremos duplicatas para a tag de título e menos duplicatas para a tag de descrição:

     

    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 (novo conversor (delegar (Post p) {return p as IPublishable;})); Page.Title = Category.GetCategory (categoryId) .Title + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; } base.AddMetaTag ("description", "Dal Blog SoulTricks, un elenco degli articoli che appartengono alla categoria" + Category.GetCategory (categoryId) + ""); }}

     

    A mesma coisa vale para o código sobre Autores, o TagsE o Mese e ano escolha:

     

    private void DisplayAuthors () {if (! string.IsNullOrEmpty (Request.QueryString ["name"])) {string author = Server.UrlDecode (Request.QueryString ["name"]); PostList1.ContentBy = ServingContentBy.Author; PostList1.Posts = Post.GetPostsByAuthor (autor) .ConvertAll (novo conversor (delegar (Post p) {return p as IPublishable;})); Page.Title = "Gli articoli di" + Request.QueryString ["name"] + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; } base.AddMetaTag ("descrição", "Dal Blog SoulTricks, um elenco de todos os artigos escritos da" + Request.QueryString ["nome"]); }} private void DisplayTags () {if (! string.IsNullOrEmpty (Request.QueryString ["tag"])) {PostList1.ContentBy = ServingContentBy.Tag; PostList1.Posts = Post.GetPostsByTag (Request.QueryString ["tag"]. Substring (1)). ConvertAll (novo conversor (delegar (Post p) {return p as IPublishable;})); base.Title = "Todas as postagens marcadas como '" + Request.QueryString ["tag"]. Substring (1) + "'" + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; } base.AddMetaTag ("description", "Dal Blog di SoulTricks, um elenco de todos os artigos classificados com tag" + Request.QueryString ["tag"]. Substring (1) + ""); }} private void DisplayDateRange () {string year = Request.QueryString ["year"]; string mês = Request.QueryString ["mês"]; string specificDate = Request.QueryString ["data"]; if (! string.IsNullOrEmpty (ano) &&! string.IsNullOrEmpty (mês)) {DateTime dateFrom = DateTime.Parse (year + "-" + month + "-01", CultureInfo.InvariantCulture); DateTime dateTo = dateFrom.AddMonths (1) .AddMilliseconds (-1); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate (dateFrom, dateTo) .ConvertAll (novo conversor (delegar (Post p) {return p as IPublishable;})); Page.Title = dateFrom.ToString ("MMMM aaaa") + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; } base.AddMetaTag ("description", "Blog a carattere sociale con news dal web, aperto a tutti coloro che vogliono condividere un loro pensiero. "+ Título +" ");} else if (! String.IsNullOrEmpty (ano)) {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 (novo conversor (delegar (Post p) {return p as IPublishable;})); ; Page.Title = dateFrom.ToString ("yyyy") + "-" + BlogSettings.Instance.Name; if (Request.QueryString ["page"]! = "1" && Request.QueryString ["page"]! = null) {Page.Title + = "- Pagina" + Request.QueryString ["page"]; } base.AddMetaTag ("description", "Blog a carattere sociale con 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 (data, data) .ConvertAll (novo conversor (delegar (Post p) {return p as 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 [" page "];} base.AddMetaTag (" description "," Blog social com notícias da web, aberto a todos aqueles que desejam compartilhar suas ideias. "+ Título +" ");} else if (! String.IsNullOrEmpty (Request.QueryString [" calendar "])) {calendar.Visible = true; PostList1.Visible = false; Page.Title = Server.HtmlEncode (Recursos. labels.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, aperte a tutti coloro che vogliono condividere un loro pensiero.


     


    Essas alterações no arquivo default.aspx.cs permitem que você tenha títulos únicos para cada página, enquanto no que diz respeito à descrição, você tem a exclusividade apenas para as seções individuais (Home, Categorias, Tags, Autores, Datas).

    Com mais algumas alterações também é possível customizar a descrição de cada página pertencente às seções indicadas, mas com as sugestões propostas já podemos obter aquelas melhorias que o Google certamente gostaria.


    Este é o novo arquivo compactado de default.aspx.cs (11.46 kb) para substituir o que você já tem na raiz do seu blog (sempre faça um backup do arquivo existente primeiro).

    Atenção porque a solução proposta foi testada com BlogEngine.net 2.5

    Até a próxima

    Adicione um comentário do Como remover títulos duplicados e meta tags de descrição no BlogEngine.net
    Comentário enviado com sucesso! Vamos analisá-lo nas próximas horas.