giovedì 11 giugno 2009

Translator English Italian

Blogger: ordinare gli "Articoli Correlati" presenti nei post

In un articolo precedente avevamo visto come inserire gli articoli correlati in fondo ad ogni post.
Oggi vediamo come fare in modo che gli articoli correlati vengano visualizzati in ordine alfabetico così da facilitare la lettura da parte dell'utente ed aumentare l'efficacia di questa funzionalità.
Gli step da seguire sono semplici:

  • Nella porzione di codice javascript inserita nella intestazione del blog, bisogna aggiungere due nuove funzioni e modificare la funzione printRelatedLabels(). Le modifiche sono evidenziate in rosso.
    <script type='text/javascript'>
    //<![CDATA[

    Array.prototype.remove = function(from, to) {
    var rest = this.slice((to || from) + 1 || this.length);
    this.length = (from < 0 ? this.length + from : from);
    return this.push.apply(this, rest);
    };

    function sortResult() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    var nItems = relatedTitles.length;
    var minItem;
    var minItemIdx;

    for(var j = 0; j < nItems; j++) {
    minItemIdx = 0;
    minItem = relatedTitles[minItemIdx];
    for(var i = 1; i < relatedTitles.length; i++) {
    if(minItem > relatedTitles[i]) {
    minItemIdx = i;
    minItem = relatedTitles[minItemIdx];
    }
    }
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[minItemIdx];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[minItemIdx];
    relatedUrls.remove( minItemIdx );
    relatedTitles.remove( minItemIdx );
    }

    relatedTitles = tmp2;
    relatedUrls = tmp;
    }


    var relatedTitles = new Array();
    var relatedTitlesNum = 0;
    var relatedUrls = new Array();
    function related_results_labels(json) {
    for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    relatedTitles[relatedTitlesNum] = entry.title.$t;
    for (var k = 0; k < entry.link.length; k++) {
    if (entry.link[k].rel == 'alternate') {
    relatedUrls[relatedTitlesNum] = entry.link[k].href;
    relatedTitlesNum++;
    break;
    }
    }
    }
    }

    function removeRelatedDuplicates() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    for(var i = 0; i < relatedUrls.length; i++) {
    if(!contains(tmp, relatedUrls[i])) {
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[i];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[i];
    }
    }
    relatedTitles = tmp2;
    relatedUrls = tmp;
    }

    function contains(a, e) {
    for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
    return false;
    }

    function printRelatedLabels() {
    //var r = Math.floor((relatedTitles.length - 1) * Math.random());
    var r = 0;

    var i = 0;
    document.write('<ul>');
    while (i < relatedTitles.length && i < 20) {
    document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></li>');
    if (r < relatedTitles.length - 1) {
    r++;
    } else {
    r = 0;
    }
    i++;
    }
    document.write('</ul>');
    }
    //]]>
    </script>
  • poi bisogna modificare la porzione di codice aggiunta la volta scorsa :
    <div><span class='post-related-articles'>
    <b:if cond='data:blog.pageType == &quot;item&quot;'>
    <div class='similiar'>
    <div class='widget-content'><br/>
    <h3 style='color:#FF9900;'>Articoli correlati</h3>
    <div id='data2007'/>
    <script type='text/javascript'>
    removeRelatedDuplicates();
    sortResult();
    printRelatedLabels();
    </script>
    </div>
    </div>
    </b:if>
    </span> </div>
  • salvete il nuovo modello
L'elenco degli articoli correlati è in ordine alfabetico.

Nessun commento:

Posta un commento