• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

perdido_e_sozinho

[PHP] Tag Cloud

8 mensagens neste tópico

(Tal como prometido aqui fica.)

Afinal de contas o que é uma Tag Cloud?

Uma Tag Cloud não é mais que uma lista de tags (palavras chave) que são distinguidas através de diferentes tamanhos de letra. Isto permite que o utilizador possa seleccionar uma tag em função da sua maior relevância ou utilização.

O grande criador desta tendência foi o site del.icio.us que introduziu esta tendência que em pouco tempo ganhou uma enorme relevância.

Começando:

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.

A tabela em questão pode possuir uma estrutura simples ou complexa consoante o projecto em questão:

------------------------

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:

Após termos a base de dados e respectivos registos poderemos introduzir o código. Tentem usar sempre que possível os padrões web.

Aqui fica o código php correspondente à criação da Tag Cloud

// 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
}

Estilos:

Para terminar basta o toque que fará a Tag Cloud brilhar, a alteração de tamanhos. Use este código na sua folha de estilos css.

.micro {
         font-size: xx-small;
}
.pequena {
        font-size: small;
}
.medio {
        font-size: medium;
}
.grande {
         font-size: large;
}
.enorme {
        font-size: xx-large;
}

Enfim os resultados:

Após concluído este processo o efeito final deve ser bastante idêntico ao site http://www.o-directorio.info/.

Espero que este artigo seja do vosso agrado.

Com os melhores cumprimentos,

Sérgio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem porreiro o tutorial perdido_e_sozinho :P

Eu pensava que fosse mais dificil mas afinal é só imaginação :P

Vai dar jeito para projectos futuros :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom tutorial para aqueles que estão a aprender agora :thumbsup:

if (@mysql_num_rows($risTags)) {

      while (list($count, $tag) = mysql_fetch_row($risTags)) $array[$tag] = $count;

}

Não testei esse código mas parece-me que ai esta errado... não era suposto ser

while (list($count, $tag) = each(mysql_fetch_row($risTags)) $array[$tag] = $count;

Acho que esqueceste o each();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código tem funcionado, pelo menos no meu site http://www.o-directorio.info/ pelo que não sei ao certo se o each é obrigatório.

Mas terei isso em conta, numa próxima revisão do código.

Com os melhores cumprimentos,

Sérgio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom tutorial para aqueles que estão a aprender agora :thumbsup:

Não testei esse código mas parece-me que ai esta errado... não era suposto ser

while (list($count, $tag) = each(mysql_fetch_row($risTags)) $array[$tag] = $count;

Acho que esqueceste o each();

kingless, nao é preciso usar o each(), pelo menos eu nunca usei e nos tutorias k leio, eu nunca vi kom essa funcao! e axo k tb n é preciso, pois o while ja vai buscar cada valor da array!

Bom tutorial perdido_e_sozinho! :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas tardes,

Gostaria de obter indicações de PHP de uma Tag Cloud para um site que adquiri na net.

É um site simples, mas gostaria de o tornar moderno.

Caso seja possivel obter indicações Tutoriais sobre como fazer e algum codigo.

Não necessita de ser coisa muito complexa.

Obrigado pelas dicas que possam dar.

Abraços.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora