Ferramentas de Usuário

Ferramentas de Site


dev_web:php:snippet:tagcloud

TagCloud

Existem módulos específicos para CMS e motores de blog, mas neste caso este exemplo serve para sites que façam uso de uma tabela de tags.

Tabelas da base de dados


TABELA Tags Tags varchar(50)


OU


TABELA Tags ID INT Tags varchar(50)


OU


TABELA Tags ID INT Tags varchar(50) Artigo INT


Código

<?php
// Cria a conecção à base de dados
$db = @mysql_connect('localhost','utilizador','password');
@mysql_select_db("base de dados",$db);
 
// Obtem a lista de tags e número de vezes que surge na tabela
$risTags = @mysql_query("SELECT COUNT(tag) AS tagCount, tag FROM tags GROUP BY tag");
 
// Cria um array de tags
if (@mysql_num_rows($risTags)) {
 
       while (list($count, $tag) = mysql_fetch_row($risTags))  $array[$tag] = $count;
 
}
 
// Obtém a tag com o maior número de registos
$max = max($array);
// Obtém a tag com o menor número de registos
$min = min($array);
// Obtém a Aplitude dos registos e calcula a diferença entre as categorias
$distribution = ($max -$min) / 5; // Este número corresponde ao número de categorias da Tag Clouds
 
// Cria a Lista de tags
foreach ($array as $tag=>$count) {
 
    // Define a categoria da tag
    if ($count == $min) { $class = "micro"; }
    elseif ($count == $max) { $class = "enorme"; }
    elseif ($count > ($min + ($distribution * 2))) { $class = "grande"; }
    elseif ($count > ($min + $distribution)) { $class = "medio"; }
    else { $class = "pequeno"; }
 
 
    // Cria o hiperlink com a tag
    echo '<a href="?links='.$tag.'" class="'.$class.'">'.$tag.'</a> '; // Poderá personalizar esta linha de forma a se adaptar este projecto usando as variáveis $tag para as tags e $class para a propriedade das letras
}

Formatação

.micro {
          font-size: xx-small; 
}
.pequena { 
         font-size: small; 
}
.medio { 
         font-size: medium; 
}
.grande {
          font-size: large; 
}
.enorme { 
         font-size: xx-large; 
}
Tópico de discussão no fórum: Tag Cloud
dev_web/php/snippet/tagcloud.txt · Última modificação em: 2018/05/14 21:37 (edição externa)