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 == "item"'>
<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
Nessun commento:
Posta un commento