perdido_e_sozinho Posted July 25, 2006 at 01:38 PM Report #40153 Posted July 25, 2006 at 01:38 PM (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
karva Posted July 25, 2006 at 02:39 PM Report #40173 Posted July 25, 2006 at 02:39 PM tnks, ta bue bakano parabens... Proud LEIC-A@IST student!
QuickFire Posted July 25, 2006 at 02:47 PM Report #40177 Posted July 25, 2006 at 02:47 PM Bem porreiro o tutorial perdido_e_sozinho 😛 Eu pensava que fosse mais dificil mas afinal é só imaginação 😛 Vai dar jeito para projectos futuros 😛
kingless Posted July 29, 2006 at 02:04 PM Report #40957 Posted July 29, 2006 at 02:04 PM Bom tutorial para aqueles que estão a aprender agora 👍 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();
perdido_e_sozinho Posted July 30, 2006 at 12:45 PM Author Report #41120 Posted July 30, 2006 at 12:45 PM 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
RayBacK Posted October 5, 2006 at 09:33 PM Report #55435 Posted October 5, 2006 at 09:33 PM Bom tutorial para aqueles que estão a aprender agora 👍 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! 😁
MGC Posted March 22, 2012 at 11:47 PM Report #445251 Posted March 22, 2012 at 11:47 PM 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.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now