OK, I’m still messing around with my tag cloud code. As previously mentioned, I took a bit of code from this page, and have been messing around with it. I just added a couple of minor things that I wanted.
First, I now have a [Home] link at the end of the tag cloud, if we’re not actually on the home page. Second, I now change the link into just text if we’re on the page for a given label. None of this was a big deal, but it did serve to remind me of a few JavaScript basics, such as how to do RegEx matching in JavaScript, and how to get the URL of the current page. Here’s the code:
<!– originally taken from http://phydeaux3.blogspot.com/2007/05/automatic-list-of-labels-for-classic.html –> | |
<div id="labelList" class="BlogBody"></div> <script type="text/javascript"> | |
//<![CDATA[ | |
function listLabels(root){ | |
var baseURL = '/search/label/'; | |
var baseHeading = "My Tags"; | |
var isFTP = false; | |
var llDiv = document.getElementById('labelList'); | |
var entry = root.entry; | |
var h1 = document.createElement('h1'); | |
h1.className = 'sidebar-title'; | |
var h1t = document.createTextNode(baseHeading); | |
h1.appendChild(h1t); | |
llDiv.appendChild(h1); | |
var ul = document.createElement('not-ul'); | |
ul.id = 'label-list'; | |
var category = entry.category; | |
labelSort = new Array(); | |
for(p in category){ | |
labelSort[labelSort.length] = [category[p].term]; | |
} | |
labelSort.sort(function(x,y){ | |
var a = String(x).toUpperCase(); | |
var b = String(y).toUpperCase(); | |
if (a > b) | |
return 1 | |
if (a < b) | |
return –1 | |
return 0; | |
}); // http://www.java2s.com/Code/JavaScript/Language-Basics/CaseInsensitiveComparisonfortheArraySortMethod.htm | |
// where are we? | |
var pageaddr = document.location.href; | |
for (var r=0; r < labelSort.length; r++){ | |
var li = document.createElement('not-li'); | |
var full_link = baseURL + encodeURIComponent(labelSort[r]); | |
var re = new RegExp(full_link + '$'); | |
if (pageaddr.match(re)) | |
{ | |
// just show the text | |
abnk = document.createTextNode(labelSort[r] + ' / '); | |
ul.appendChild(abnk); | |
} | |
else | |
{ | |
// show the link | |
var a = document.createElement('a'); | |
if(isFTP){ | |
a.href = full_link +'.html'; | |
} | |
else { | |
a.href = full_link; | |
} | |
a.innerHTML = labelSort[r] + ' '; | |
li.appendChild(a); | |
ul.appendChild(li); | |
abnk = document.createTextNode(' / '); | |
ul.appendChild(abnk); | |
} | |
} | |
// add a home link. | |
if (pageaddr != "<$BlogURL$>") | |
{ | |
var li = document.createElement('not-li'); | |
var a = document.createElement('a'); | |
a.href = "<$BlogURL$>"; | |
a.innerHTML = '[Home]'; | |
li.appendChild(a); | |
ul.appendChild(li); | |
} | |
llDiv.appendChild(ul); | |
} | |
//]]> | |
</script> | |
<script type="text/javascript" src="http://www.blogger.com/feeds/13487006926024246136/blogs/3059692?alt=json-in-script&callback=listLabels" ></script> |