Pubblicato il 07/10/17 - aggiornato il  | 10 commenti :

Widget dei Top Commentatori per Blogger.

Come installare il widget dei Commentatori più assidui nei blog su piattaforma Blogger. Top Commentators Widget for Blogger.
In questi ultimi giorni ho ricevuto diversi commenti su alcuni widget che hanno smesso di funzionare. La ragione di questi problemi risiede essenzialmente sulla modifica della connessione su Blogger passata da HTTP a HTTPS.

Dopo aver ripristinato il widget dei Commenti Recenti con elenco personalizzato sono riuscito a rendere nuovamente utilizzabile il widget dei Top Commentatori che presentai circa un anno fa.
Nei prossimi giorni mi cimenterò, spero con successo, nel rendere nuovamente funzionante il gadget dei Commenti Recenti con miniatura ruotante.

Il widget che vado a presentare dovrebbe funzionare se si è attivata la connessione HTTPS e anche se ancora non lo si è fatto. Ricordo che per attivare la connessione HTTPS si va su Bacheca -> Impostazioni -> Di Base -> HTTPS per poi scegliere il Sì. Chi ha un dominio personalizzato non può attivare questa connessione.





Questo gadget potrebbe non funzionare nei blog con dominio personalizzato. L'aspetto del widget sarà il seguente

top-commentatori

Il codice permette di escludere i commenti dell'autore che sarebbero sovrabbondanti e quelli di altri commentatori che non vogliamo mostrare. Per questa personalizzazione non occorre modificare il Tema.






Si va su Bacheca -> Layout -> Aggiungi un gadget -> Base -> HTML/Javascript e si incolla questo codice

<style type="text/css">
.top-commentatori-line {margin: 4px 1px;}
.top-commentatori-line .profile-name-link {padding-left:1px;}
.top-commentatori-avatar {vertical-align:middle;}
</style>
<script type="text/javascript">
var Num_Commentatori = 12; //Numero di commentatori
var Min_Commenti = 1;        // Numero minimo di commenti
var Num_Giorni = 0;           // Commenti per numero di giorni (es. 30), 0 per tutti
var Escludimi = true;      // true: per escludere i nostri commenti altrimenti false
var Escludi_Utenti = ["Anonymous", "parsifal32"];    // Escludere nomi di commentatori
var Mass_Lung_Username = 30; // Non taglia gli username da 0 a 4 caratteri
var txtTopLine = '<b>[#].</b> [image] [user] ([count])';
var TestoNoCommenti = 'Non ci sono ancora Top Commentatori.';
var Sost_Anonymous = '';     // lasciarlo vuoto o mettere Anonimo
var DimAvatar = 32; // dimensioni avatar
var RitAvatar = true; // ritaglio avatar altrimenti sostituire true con false
var Avatar_Default = "https://lh5.googleusercontent.com/-q_lMY2A1B2g/UTRt9tLaWfI/AAAAAAAAgqQ/Nv2yyYuo5-U/s"+DimAvatar+"/avatar2.png";
var urlAnoAvatar = 'http://www.gravatar.com/avatar/c45bf4a36d768827e07fdb10d0d24f9d=mm&s=' + DimAvatar;
var URLProfilo = ''; // Lascia vuoto o metti URL del profilo
var URL_Avatar = '';  // Lascia vuoto o URL immagine
if(!Array.indexOf) {
Array.prototype.indexOf=function(obj) {
   for(var i=0;i<this.length;i++) if(this[i]==obj) return i;
   return -1;
}}
function replaceTopCmtVars(text, item, position)
{
   if(!item || !item.author) return text;
   var author = item.author;
   var authorUri = "";
   if(author.uri && author.uri.$t != "")
     authorUri = author.uri.$t;
   var avaimg = urlAnoAvatar;
   var bloggerprofile = "https://www.blogger.com/profile/";
   if(author.gd$image && author.gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
     avaimg = author.gd$image.src;
   else {
     var parseurl = document.createElement('a');
     if(authorUri != "") {
       parseurl.href = authorUri;
       avaimg = 'https://www.google.com/s2/favicons?domain=' + parseurl.hostname;
     }
   }
   if(URLProfilo != "" && authorUri == URLProfilo && URL_Avatar != "")
     avaimg = URL_Avatar;
   if(avaimg == "https://lh6.googleusercontent.com/-1W5J_soMWEE/UTRzoKVNM2I/AAAAAAAAgqg/8CVSZxI855c/s16/blogger-immagine.gif" && Avatar_Default != "")
     avaimg = Avatar_Default;
   var newsize="s"+DimAvatar;
   avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/");
   if(RitAvatar) newsize+="-c";
   avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/");
   var authorName = author.name.$t;
   if(authorName == 'Anonymous' && Sost_Anonymous != '' && avaimg == urlAnoAvatar)
     authorName = Sost_Anonymous;
   var imgcode = '<img class="top-commentatori-avatar" height="'+DimAvatar+'" width="'+DimAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
   if(authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>';
   if(Mass_Lung_Username > 3 && authorName.length > Mass_Lung_Username)
     authorName = authorName.substr(0, Mass_Lung_Username-3) + "...";
   var authorcode = authorName;
   if(authorUri!="") authorcode = '<a class="profile-name-link" href="'+authorUri+'">'+authorcode+'</a>';
   text = text.replace('[user]', authorcode);
   text = text.replace('[image]', imgcode);
   text = text.replace('[#]', position);
   text = text.replace('[count]', item.count);
   return text;
}
var topcommenters = {};
var ndxbase = 1;
function showTopCommenters(json) {
   var one_day=1000*60*60*24;
   var today = new Date();
   if(URLProfilo == "") {
     var elements = document.getElementsByTagName("*");
     var expr = /(^| )profile-link( |$)/;
     for(var i=0 ; i<elements.length ; i++)
       if(expr.test(elements[i].className)) {
         URLProfilo = elements[i].href;
         break;
       }
   }
   if(json && json.feed && json.feed.entry && json.feed.entry.length) for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
     var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Ernesto Tirinnanzi") continue;
     if(Num_Giorni > 0) {
       var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
       var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);
      //Per calcolare la differenza tra due date e convertirla in giorni
       var days = Math.ceil((today.getTime()-cmtDate.getTime())/(one_day));
       if(days > Num_Giorni) break;
     }
     var authorUri = "";
     if(entry.author[0].uri && entry.author[0].uri.$t != "")
       authorUri = entry.author[0].uri.$t;
     if(Escludimi && authorUri != "" && authorUri == URLProfilo)
       continue;
     var authorName = entry.author[0].name.$t;
     if(Escludi_Utenti.indexOf(authorName) != -1)
       continue;
     var hash=entry.author[0].name.$t + "-" + authorUri;
     if(topcommenters[hash])
       topcommenters[hash].count++;
     else {
       var commenter = new Object();
       commenter.author = entry.author[0];
       commenter.count = 1;
       topcommenters[hash] = commenter;
     }
   }
   if(json && json.feed && json.feed.entry && json.feed.entry.length && json.feed.entry.length == 200) {
     ndxbase += 200;
     document.write('<script type="text/javascript" src="https://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&start-index='+ndxbase+'&alt=json-in-script&callback=showTopCommenters"></'+'script>');
     return;
   }
   var tuplear = [];
   for(var key in topcommenters) tuplear.push([key, topcommenters[key]]);
   tuplear.sort(function(a, b) {
     if(b[1].count-a[1].count)
         return b[1].count-a[1].count;
     return (a[1].author.name.$t.toLowerCase() < b[1].author.name.$t.toLowerCase()) ? -1 : 1;
   });
   var realcount = 0;
   for(var i = 0; i < Num_Commentatori && i < tuplear.length ; i++) {
     var item = tuplear[i][1];
     if(item.count < Min_Commenti)
         break;
     document.write('<di'+'v class="top-commentatori-line">');
     document.write(replaceTopCmtVars(txtTopLine, item, realcount+1));
     document.write('</d'+'iv>');
     realcount++;
   }
   if(!realcount)
     document.write(TestoNoCommenti);
}
document.write('<script type="text/javascript" src="https://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&alt=json-in-script&callback=showTopCommenters"></'+'script>');
</script>

Si salva il gadget e si posiziona in una sidebar quindi si va su Salva disposizione. Le personalizzazioni più importanti riguardano i seguenti parametri:
  1. I commenti colorati di verde mostrano a cosa servono i parametri e possono essere tralasciati
  2. L'avatar di default con questo URL
    https://lh5.googleusercontent.com/-q_lMY2A1B2g/UTRt9tLaWfI/AAAAAAAAgqQ/Nv2yyYuo5-U/s80/avatar2.png
    è stato inserito con questa sintassi
    https://lh5.googleusercontent.com/-q_lMY2A1B2g/UTRt9tLaWfI/AAAAAAAAgqQ/Nv2yyYuo5-U/s"+DimAvatar+"/avatar2.png
  3. Vengono presi in considerazione solo gli ultimi 200 commenti, valore che può essere modificato in tutte le sue quattro occorrenze.
  4. Vengono esclusi i commenti di Ernesto Tirinnanzi quindi modificare questo nome per non mostrare i commenti dell'autore. In Escludi_Utenti si possono nascondere i commenti di altri utenti. Ricordo che i nomi utente sono case sensitive e quindi che vanno inseriti con maiuscole, minuscole e spazi.
Chi ha un dominio personalizzato può risolvere sostituendo la seconda occorrenza di

https://'+window.location.hostname+'/feeds/comments/default

con il suo dominio personalizzato senza https. Per esempio in questo blog sarebbe

http://www.ideepercomputeredinternet.com/feeds/comments/default

Invece nella prima occorrenza occorre sostituire https con http in modo che diventi

http://'+window.location.hostname+'/feeds/comments/default




10 commenti :

  1. Molto interessante qst post e aspetto quello con icone rotanti che ora nn funzionava infatti ...approfitto di qst post x chiedere come mai accedendo ai blog con Firefox sotto ai post non vedo l icona di g+ mentre se accedo con Chrome c e....mi sai dare una risposta? Grazie

    RispondiElimina
    Risposte
    1. Purtroppo non te la so dare. Prova a vedere se Firefox è aggiornato
      @#

      Elimina
  2. Accidenti Ernesto! Non riesco a far funzionare questo widget, che mi piacerebbe tantissimo, vediamo... se io ho scritto sul blog con nomi diversi, perché prima avevo un account blogger ed ora c'è quello g+ i nomi da escludere devo metterli tra quelli utenti o posso mettere più di un nome sulla riga: var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Ernesto Tirinnanzi") continue; forse questo genera errore . Ora riprov nell'altro modo. Tu che dici?

    RispondiElimina
  3. Incolla il codice così com'è per vedere se funziona quindi successivamente applica le modifiche
    @#

    RispondiElimina
    Risposte
    1. ok Ernesto: ora mi sembra che finalmente funzioni, ma mi è rimasto ancora un problemino (ti pareva?) i profili di blogger sono senza avatar: credi che si possa ovviare?

      Elimina
  4. Se funziona metti
    Sfinge Chaos al posto di Ernesto Tirinnanzi mentre puoi aggiungere gli altri utenti da nascondere separati da virgole e tra virgolette in Escludi_Utenti. Attenzione a mantenere maiuscole e minuscole e a non aggiungere spazi prima e dopo i nomi
    @#

    RispondiElimina
  5. Anzi no, non sono solo quelli di blogger, sono proprio alcuni avatar che non compaiono :( non so perché

    RispondiElimina
  6. ok finalmente ce l'ho fatta: era semplice, ho messo i commenti a 30 giorni!

    RispondiElimina

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti. Se ti ho aiutato con il post o con le risposte ai commenti condividi su Facebook o su Twitter. Grazie.