Here is a simple function to render a tag cloud. It assumes you have an array of data ready for it. Also I originally built this for use with a stupid set of data where each entry has a space seperated list of tags like: “geek hotdogs snowboarding” so this function will also take all of those tags, parse them out, and then do all the good stuff. The function will make a cloud out of any data in your table. a Just specify the column name when you call the function. For example you could make a cloud based on users and the number of times they have posted.
{code type=php}
function tagCloud($column, $min_font_size = 15, $max_font_size = 40, $params = NULL) {
$query = “SELECT $column FROM tweets $order”;
$tagresult = mysql_query($query);
$tagmush = “”;
while ($tags = mysql_fetch_array($tagresult)) {
$tagmush .= ‘ ‘.$tags[$column];
}
$tagarray = explode(” “, $tagmush);
$countedtags = array_count_values($tagarray);
$minimum_count = min(array_values($countedtags));
$maximum_count = max(array_values($countedtags));
$spread = $maximum_count – $minimum_count;
if($spread == 0) {
$spread = 1;
}
$cloud_html = ”;
$cloud_tags = array(); // create an array to hold tag code
foreach ($countedtags as $tag => $count) {
$size = $min_font_size + ($count – $minimum_count)
* ($max_font_size – $min_font_size) / $spread;
// here is builds the html. You should adjust as necessary
$cloud_tags[] = ‘‘
. htmlspecialchars(stripslashes($tag)) . ‘‘;
}
$cloud_html = join(“n”, $cloud_tags) . “n”;
return $cloud_html;
}
{/code}
Usage:
{code type=php}
// get the tag cloud for the user ‘jake’
echo tagCloud(“tags”,15,40,”WHERE username = ‘jake’”);
{/code}


Leave a Comment
Let us know your thoughts on this post but remember to place nicely folks!