Ecco una funzione php per generare automaticamente delle Tag Cloud prendendo i dati da database. E’ un mix di codici riadattati da altri script.
ISTRUZIONI GENERALI
Cambiare tag e tabella con i nomi del campo e della tabella da cui si vogliono recuperare i dati.
A seconda del campo di interesse bisogna cambiare il separatore indicato nella funzione explode(” “, $t[0],50); Nel mio caso, uso come separatore lo spazio, e per velocità considero solo i primi 50 caratteri del campo (si trattava di articoli). Limito anche la query a 30 articoli random. MOdificando tali valori la Tag Cloud diviene naturalmente più precisa.
Bisogna inoltre modificare il link da associare ai Tag individuati, in modo che corrisponda a una pagina qualsiasi (io ne ho usata una di ricerca) del vostro sito.
FUNZIONE PHP
<?
function getTags($minFont = 10, $maxFont = 35) {
$tags = array();
$cloud = array();
// Grab the tags from the database
$query = mysql_query(”SELECT filename FROM t_news ORDER BY RAND() LIMIT 30 “);
while ($t = mysql_fetch_array($query)) {
$db = explode(” “, $t[0],50);
while (list($key, $value) = each($db)){
if (!isset($tags[$value]))
$tags[$value] = 0;
$tags[$value] += 1;
}
}
// Get totals to use for font size
$min = min(array_values($tags));
$max = max(array_values($tags));
$fix = ($max – $min == 0) ? 1 : $max – $min;
// Display the tags
foreach ($tags as $tag => $count) {
$size = $minFont + ($count – $min) * ($maxFont – $minFont) / $fix;
$tagWord = strtolower(str_replace(” “, “-”, $tag));
//$cloud[] = ‘<a href=”tags/’. $tagWord .’/” class=”cloud” title=”Tag: ‘. ucfirst($tag) .’ usato ‘. $count .’ volte!” style=”font-size: ‘. floor($size) .’px”>’. ucwords($tag) .’</a>’;
$cloud[] = ‘<a href=”index.php?p=cercatag&tag=’.ucwords($tag).’” class=”cloud” title=”Tag: ‘. ucfirst($tag) .’ usato ‘. $count .’ volte!” style=”font-size: ‘. floor($size) .’px”>’. ucwords($tag) .’</a>’;
}
$shown = implode(”\n”, $cloud) . “\n”;
return $shown;
}
?>
Codice CSS
#cloud { padding: 10px 10px; }
.cloud { padding: 3px; text-decoration: none; line-height: 60%; }
.cloud:link { color: #94B3C5; }
.cloud:active { color: #94B3C5; }
.cloud:visited { color: #B5B4A0; }
.cloud:hover { color: #ffffff; }
.cloud:focus { color: #ffffff; }
CODICE DA INSERIRE PER VISUALIZZARE LA TAG CLOUD
<div id=”cloud”><?php echo getTags(10, 30); ?></div>







