Home > Tutoriais, Web Design > PHP tutorial: Criar uma Tag Cloud

PHP tutorial: Criar uma Tag Cloud

Uma das formas de navegação introduzidas com o surgimento da Web 2.0 foi a navegação através de Tags.
Uma tag é nada mais nada menos que uma keyword que define algo. Se escrevo num site de informática sobre um processador, esse artigo pode ser marcado com uma keyword processadores, desta forma a pesquisa por artigos relacionados com processadores é simplificada.

Criar uma tag cloud não é um processo complexo. Básicamente precisas de ter uma fonte onde vais buscar as tags, normalmente é um vector onde são definidas e depois armazenadas em base de dados e a partir daí trabalhas o código. Vamos então começar.

< ?php
// cria a ligação á base de dados
$query = "SELECT coluna_da_bd AS tag, COUNT(id) AS quantity
FROM tabela
GROUP BY coluna_da_bd
ORDER BY coluna_da_bd ASC";
$result = mysql_query($query);

No código em cima vamos seleccionar qual é a coluna da base de dados que vamos usar para definir as tags.

while ($row = mysql_fetch_array($result)) {
$tags[$row['tag']] = $row['quantity'];
}

$tags[$row['tag']] – vector $tag recebe as keywords da base de dados.
$row['quantity'] – devolve a quantidade de vezes que a keyword existe.

Exemplo

$tag[processadores] = 2; – A palavra processadores existe 2x na pesquisa efectuada.
A quantidade de vezes que a palavra existe é útil para definir o tamanho da tag.


$max_size = 300;
$min_size = 100;

Aqui defines o tamanho mínimo e máximo das fontes. Para que funcione bem com qualquer estilo definido no CSS prefiro interpretar os valores em percentagem (%) em vez de pixels ou qualquer outra medida.

$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));

Agora é preciso definir quais as keywords com os valores máximos e mínimos do vector $tags e saber qual é o alcance desses valores de forma a podermos calcular o tamanho da fonte.

$spread = $max_qty - $min_qty;
if (0 == $spread) {
$spread = 1;
}

Uma vez feito isso vamos agora determinar o tamanho da fonte.

$step = ($max_size - $min_size)/($spread);
foreach ($tags as $key => $value) {
// Vamos encontrar o $value superior a $min_qty
// multiplicamos esse valor pelo tamanho da fonte ($size)
// E adicionamos o $min_size definido anteriormente
$size = $min_size + (($value - $min_qty) * $step);
// Colocamos o valor em forma de poder ser calculado em percentagem (%)
$size = ceil($size);

// Adicionar link ás tags
echo '<a href="#" style="font-size: '.$size.'%"';
// ajustar o tooltip gerado pelo atributo title do link
echo ' title="'.$value.' ( '.$key.' )"';
echo '>'.$key.' ';
}
?>

E pronto se tudo correu bem deverás ter uma tag cloud. Para limitar os resultados mostrados na tagcloud basta definires o limite quando fazes a consulta á base de dados:

$query = "SELECT coluna_da_bd AS tag, COUNT(id) AS quantity LIMIT 25
Desta forma a tua tagcloud mostra 25 tags.

Loading
Categories: Tutoriais, Web Design Tags: ,
  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.