lunedì 26 marzo 2012

Commenti Blogspot come Splinder

Come molti di voi, ho dovuto migrare da Splinder a Blogspot.
Per scoprire che i commenti fanno... Pietà. A dire poco.

Non importa quanto proviate a giocare col gadget dei commenti perché non si ottiene nulla.

Allora com'è che i miei commenti sono quasi identici a quelli del fu Splinder?
Molto semplice: ho utilizzato questo.
Che però mi ha aiutato fino ad un certo punto.

Per farla breve, ho trovato decine di script per arrivare a qualcosa di simile a quello che volessi.
Di simile, appunto, ed oltretutto confuso.
Perché ancora non sono riuscito a risalire alla paternità dello script originario, visto che tutti lo spacciavano per proprio.
Arrivando in molti casi ad ospitarne una parte sul loro server.
Tradotto: se il loro sito andava giù, addio commenti. In toto.
Due cose due di HTML le conosco anche io, però. Quindi ho tirato giù tutto ed ho ricomposto il puzzle.

Prima di cominciare, quindi, due disclaimer.
1) Tu che sei il vero autore, lascia pure due righe nei commenti visto che qui i PM non esistono.
Provvederò volentieri ad inserire dati, link e quant'altro.
Anche perché non tollero il concetto di spacciare qualcosa di open - e fatto da altri - a nome proprio.
2) " Il backup è buono, il backup è bello, il backup mi fa dormire sereno la notte ".
Ripetere 1000 volte prima di cominciare, e se dopo le 1000 volte non avete fatto il backup fatevi visitare perché soffrite di qualcosa di grave.

Di seguito due versioni, con differenze sostanziali.
La prima è ( più o meno ) la versione " completa ", o almeno quanto sono riuscito a ricostruire.
Nel commento inserirà TUTTO. Chi ha detto cosa, in che post, in quale data eccetera.
Per me era decisamente troppo quindi trovate anche la Valeren's version, ridotta per essere simile a quella di Splinder.
In entrambi i casi c'è un parametro che DEVE essere modificato: è in rosso.
Avete presente il rosso, vero? Ecco. Rosso.
Quelli in verde, invece, sono opzionali.


Istruzioni:
1) dalla " Bacheca " selezionate " Aggiungi un gadget " nella posizione dove vorrete mettere i commenti
2) selezionate " HTML/JavaScript " [ Si, è in elenco. Cercate ]
3) inserite il codice che avete scelto, versione full o la mia
4) cambiate il link all'RSS -> non piangete: sotto lo spiego
5) inserite il nome / titolo che volete e premete " Salva "

Spiegazione del punto 4)
Alla fine del codice è sempre presente una riga di questo tipo:
<script src=http://iltuoblog.blogspot.com/feeds/comments/default?alt=json-in-script&callback=showrecentcomments>
Basta cancellare la parte in rosso ed inserire il proprio blog.
Nel mio caso, appare così:
<script src=http://dictatorwannabe.blogspot.com/feeds/comments/default?alt=json-in-script&callback=showrecentcomments>
Facile. Si, che è facile. Dovreste ricordare il nome del vostro blog.
E comunque è scritto nell'indirizzo.

Passiamo alle due versioni.

1 - FULL, autore da definire ma che intanto ringrazio
<script style="text/javascript">
function showrecentcomments(json) {
  var numcomments = 5;
  var showcommentdate = true;
  var showposttitle = true;
  var numchars = 0;
for (var i = 0; i < numcomments; i++) {
    var entry = json.feed.entry[i];
    var alturl;
    if (i == json.feed.entry.length) break;
for (var k = 0; k < entry.link.length; k++) {
      if (entry.link[k].rel == 'alternate') {
        alturl = entry.link[k].href;
        break;
      }
    }
   alturl = alturl.replace("#", "#");
   var postlink = alturl.split("#");
   postlink = postlink[0];
   var linktext = postlink.split("/");
   linktext = linktext[5];
   linktext = linktext.split(".html");
   linktext = linktext[0];
   var posttitle = linktext.replace(/-/g," ");
   posttitle = posttitle.link(postlink);
   var commentdate = entry.published.$t;
   var cdyear = commentdate.substring(0,4);
   var cdmonth = commentdate.substring(5,7);
   var cdday = commentdate.substring(8,10);
   var monthnames = new Array();
   monthnames[1] = "Gen";
   monthnames[2] = "Feb";
   monthnames[3] = "Mar";
   monthnames[4] = "Apr";
   monthnames[5] = "Mag";
   monthnames[6] = "Giu";
   monthnames[7] = "Lug";
   monthnames[8] = "Ago";
   monthnames[9] = "Set";
   monthnames[10] = "Ott";
   monthnames[11] = "Nov";
   monthnames[12] = "Dic";
   if ("content" in entry) {
     var comment = entry.content.$t;}
   else
   if ("summary" in entry) {
     var comment = entry.summary.$t;}
   else var comment = "";
var re = /<\S[^>]*>/g;
   comment = comment.replace(re, "");

   if (showcommentdate == true)
document.write('<a href="' + alturl + '">' + entry.author[0].name.$t + '</a> in');
   if (showposttitle == true) document.write(' '+posttitle+' ');


document.write('<br/>');
  }


}
</script>
<script src=http://iltuoblog.blogspot.com/feeds/posts/default?alt=json-in-script&callback=showrecentcomments>
</script>
2 - La mia versione, che potrebbe benissimo dare strani errori o non funzionare o causare la fine del mondo o avere variabili non utilizzate [ al momento, non mi ha dato problemi ]
<script style="text/javascript">
function showrecentcomments(json) {
  var numcomments = 8;
for (var i = 0; i < numcomments; i++) {
    var entry = json.feed.entry[i];
    var alturl;
    if (i == json.feed.entry.length) break;
for (var k = 0; k < entry.link.length; k++) {
      if (entry.link[k].rel == 'alternate') {
        alturl = entry.link[k].href;
        break;
      }
    }
   alturl = alturl.replace("#", "#");
   var postlink = alturl.split("#");
   postlink = postlink[0];
   var linktext = postlink.split("/");
   linktext = linktext[5];
   linktext = linktext.split(".html");
   linktext = linktext[0];
   var posttitle = linktext.replace(/-/g," ");
   posttitle = posttitle.link(postlink);
   document.write('<a href="' + alturl + '">' + entry.author[0].name.$t + '</a><br/>');
   document.write('<div style="font-size:70%">');
   document.write(' in ');
   document.write(' '+posttitle+'</div><br/>');
  }

document.write('<div style="font-size:70%;text-align:center"></div>');}
</script>
<script src=http://iltuoblog.blogspot.com/feeds/comments/default?alt=json-in-script&callback=showrecentcomments>
</script>
Provate, sperimentate...
Per completare, di sicuro le parti in verde relative a numcomments indicano quanti commenti devono essere mostrati per volta.
Per gli altri due, credo si capisca ma non ho mai fatto test.
Liberi di giocare.

P.S.: " Il backup è buono, il backup è bello, il backup mi fa dormire sereno la notte "

6 commenti:

  1. Ti giuro che un giorno con calma ci proverò anche io.

    Intanto grazie! <3 I commenti come sono adesso sul mio blog li trovo insopportabili...

    RispondiElimina
    Risposte
    1. Su su su che ci vogliono tre minuti a esagerare :)

      Elimina
  2. Risposte
    1. Visto che era facile? :)
      Due sole cose:
      1) Metti uno spazio tra " in " e il titolo del post, altrimenti sono attaccati
      2) Il titolo mi sembra piccino: prova ad alzare la percentuale in questa riga
      document.write('< div style="font-size:70%">');

      Elimina
    2. Danke sehr, Liebling.

      Ma certo che è facile: lo è però perché spieghi bene, for dummies, e io con l'html sono a quel livello lì.

      Elimina