Studio Informatico

28 feb, 2008

Tag Cloud in PHP

Posted by: admin In: Programmazione

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>

No Responses to "Tag Cloud in PHP"

Comment Form

You must be logged in to post a comment.

Studioinformatico

  • •Studio Tecnico di Ingegneria Informatica
  • •Sviluppo e programmazione
  • •Progettazione applicazioni
  • •Realizzazione siti internet
  • •Certificazione energetica
  • •Consulenza Informatica
  • •Soluzioni per Hosting
  • •Assistenza computer
  • •Corsi di Informatica

Ing. Simone Zanella
Tel. 0183.738065 - Cell. 329.9586153
Fax 0183.730220

Sede legale: via Ospedale 40, Imperia
P.IVA 01414320083
Posta Certificata PEC: simone.zanella@ingpec.eu