- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto per modificare una funzione tag cloud
-
Aiuto per modificare una funzione tag cloud
ciao,
cercando su internet ho trovato una funzione per creare tag cloud che ho adattato al mio db e che fa il suo lavoro senza problemi. Ho provato ad aggiungere alla funzione due elementi che però vengono "sterilizzati", si tratta di $tagurl che definisco ad inizio della pagina e rewtag che dovrei estrarre dalla query ma non so come inserirlo nell'array (in entrambi i casi i valori vengono ignorati)questa è la funzione
[PHP]function get_tag_data() {
$result = mysql_query("SELECT tag, count, rewtag FROM tags GROUP BY tag ORDER BY count DESC");
while($row = mysql_fetch_array($result)) {
$arr[$row['tag']] = $row['count']; //creiamo il nostro array
}
ksort($arr); //ordina l'array per tag in ordine alfabetico
return $arr;
}
//Recuperati i dati dal db e ordinati in ordine alfabetico costruiamo la funzione che genera il tag cloud:
function get_tag_cloud() {
//definiamo le dimensioni minime e massime del font
$min_font_size = 10;
$max_font_size = 24;
//Recuperiamo l'array ordinato
$tags = get_tag_data();
//calcoliamo la minima e la massima occorrenza dei tag
$minimum_count = min(array_values($tags));
$maximum_count = max(array_values($tags));
//ne calcolo la differenza
$spread = $maximum_count - $minimum_count;
if($spread == 0) {
$spread = 1; //controllo inserito per evitare errori del tipo divisione per zero
}
$cloud_html = '';
$cloud_tags = array();
//entriamo nel cuore della rappresentazione del tag cloud
foreach ($tags as $tag => $count) {
$size = $min_font_size + ($count - $minimum_count)- ($max_font_size - $min_font_size) / $spread;
//in questo modo si calcola la dimensione del font in modo porporzionale all'occorrenza del tag
$cloud_tags[] = "<a style="font-size:".floor($size)."px" href="".$tagurl."/".$rewtag."/" title="".$tag."">".$tag."</a>,";
}
$cloud_html = join("\n", $cloud_tags) . "\n";
return $cloud_html;
}[/PHP]
qualcuno sa dirmi come fare? Grazie
- ($max_font_size - $min_font_size) / $spread;