BlogEngine.net: il count dei commenti di Disqus genera un errore ecco perché

Se nel tuo sito in BlogEngine.net hai deciso di gestire i commenti del tuo Blog con la piattaforma Disqus, allora devi sapere che dovrai aggiornare il file Helpers.cs, per risolvere il problema del non funzionamento del count.js e scaricare la versione di Source di Blogengine.

Disqus è un servizio di hosting di commenti per siti web e comunità virtuali che funziona mediante una piattaforma on line. Il suo utilizzo è molto vantaggioso sia per le sue numerose funzionalità che per la possibilità di entrare in contatto con altri utenti che ne fanno utilizzo.

Purtroppo su BlogEngine.net esiste un code snippet di Disqus non aggiornato e ciò genera un errore nel count.js rallentando di molto il caricamento delle pagine del tuo blog.

Disqus in BlogEngine

Per intervenire sul codice dovrai scaricare la versione Source di BlogEngine collegandoti alla pagina di BlogEngine Codeplex, nella sezione Download, e dopo aver installato anche Visual Studio, la versione Express, aprire il progetto Blogengine precedentemente scaricato (quello source).

Da VS Express, apri il file di solution BlogEngine.sln. Questa soluzione contiene 2 progetti – il progetto BlogEngine Core e il sito principale. Una volta che il progetto è aperto non devi fare altro che eseguire i seguenti step per produrre il file BlogEngine.Core.dll per la directory BIN contenuta nel tuo sito.

Il file da modificare in questione si trova in questo percorso: BlogEngine\BlogEngine.Core\Web\Scripting\Helpers.cs. La riga 117 include un code snippet per Disqus da modificare così:

Righe di codice nel file Helpers.cs

if (BlogSettings.Instance.ModerationType == BlogSettings.Moderation.Disqus)
{
sb.Append("<script type=\"text/javascript\"> \n");
sb.Append("//<![CDATA[ \n");
sb.Append("(function() { ");
sb.Append("var links = document.getElementsByTagName('a'); ");
sb.Append("var query = '?'; ");
sb.Append("for(var i = 0; i < links.length; i++) { ");
sb.Append("if(links[i].href.indexOf('#disqus_thread') >= 0) { ");
sb.Append("query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&'; ");
sb.Append("}}");
sb.Append("document.write('<script charset=\"utf-8\" type=\"text/javascript\" src=\"http://disqus.com/forums/");
sb.Append(BlogSettings.Instance.DisqusWebsiteName);
sb.Append("/get_num_replies.js' + query + '\"></' + 'script>'); ");
sb.Append("})(); \n");
sb.Append("//]]> \n");
sb.Append("</script> \n");
}

Modifiche da applicare al codice di Helpers.cs

if (BlogSettings.Instance.ModerationType == BlogSettings.Moderation.Disqus)
{
sb.Append("<script type=\"text/javascript\">");
sb.Append("    var disqus_shortname = '" + BlogSettings.Instance.DisqusWebsiteName + "';");
sb.Append("    (function () {");
sb.Append("        var s = document.createElement('script'); s.async = true;");
sb.Append("        s.type = 'text/javascript';");
sb.Append("        s.src = '//' + disqus_shortname + '.disqus.com/count.js';");
sb.Append("        (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);");
sb.Append("    }());");
sb.Append("</script>");
}

Al termine effettua la Ricompilazione di Blogengine.Core.dll in Visual Studio Express e copia il file da Source\BlogEngine\BlogEngine.Core\bin\Release alla directory Bin del tuo Blog. Se hai Filezilla puoi fare semplicemente un upload e risolvere.

Non perdere nessuna notizia, aggiungici agli amici!


Fabrizio Cannatelli

Autore e Founder di Informarea, sono un appassionato di informatica e tecnologia da sempre. La voglia di comunicare e di condividere sul Web le mie curiosità e le mie conoscenze, mi ha spinto a lanciarmi nel progetto di questo sito. Nato un po' per gioco e un po' per passione, oggi è diventato una grande realtà.

Fabrizio Cannatelli

Approfondimenti