jfosorio Posted March 20, 2014 Report Share Posted March 20, 2014 Boas, Tenho uma página que carrega registos dinamicamente e preciso de gerar uma tag cloud, de acordo com o conteúdo de cada registo. Alguém sabe se existe algum plugin para fazer isto, ou é preciso fazer isto "à unha"? Tenho pesquisado na net e encontrei alguns plugins que fazem a cloud, mas temos de dar as palavras previamente. Ou seja, os plugins que vi não descobrem quais os termos mais recorrentes para gerar a cloud, que é no fundo aquilo que se pretende. Alguém pode dar uma ajuda? CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
yoda Posted March 20, 2014 Report Share Posted March 20, 2014 Plugins para ..? before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Devexz Posted March 20, 2014 Report Share Posted March 20, 2014 qual é a linguagem server-side? Contador de calorias: caloriaspordia.com Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Plugins para ..? Não sabes o que é uma tag cloud? Como é que não percebeste a minha dúvida? Basta ler a 1ª linha! qual é a linguagem server-side? PHP CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
yoda Posted March 21, 2014 Report Share Posted March 21, 2014 Sei o que é uma tag cloud, também sei que um plugin exige um contexto e foi isso que perguntei .. caso estejas a fazer código à mão chamar-lhe plugin não faz qualquer sentido. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Yoda, eu sei que és moderador e tens de mostrar serviço, mas sinceramente já não é a 1ª vez que respondes a posts meus sem contribuires no sentido de ajudar a esclarecer uma dúvida. Escreves por escrever e fazes observações que não fazem sentido nenhum. Eu disse que estava a fazer alguma coisa à mão? E mesmo que estivesse, porque é que não faria sentido chamar-lhe plugin? Não posso fazer um plugin à mão do zero? E disses também que um plugin exige um contexto. Ok! E eu não expliquei o contexto? Mas eu repito a dúvida: Eu tenho uma página que carrega registos dinamicamente. Ou seja, carrega texto. Preciso de uma solução (server-side ou client-side, tanto faz) que analise o texto que é carregado na página e verifique quais os termos mais repetidos, para depois gerar uma tag cloud. Eu preferia um plugin em jQuery, já que seria mais fácil e rápido de implementar, mas se for uma solução server-side também serve. CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 21, 2014 Report Share Posted March 21, 2014 pretendes criar uma tag cloud de um único texto ? quer dizer que a tua fonte de informação da tag cloud não são várias fontes de texto, mas sim um texto que está a ser apresentado na página no momento que pretendes ter a tag cloud visível, certo ? esse texto tem HTML ? (é que se for, é necessário remover as tags primeiro) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Exatamente Hippo. O texto é em HTML. Mas sugeres que desenvolva um script para isso? Eu estava à espera que houvesse um plugin para esse tipo de coisas, mesmo porque depois de saber os termos mais usados, ainda tenho de gerar a cloud. Talvez vá ter mesmo de criar um script para contar os termos e depois usar um dos plugins que vi para gerar a tag cloud. Implica uma implementação em dois passos, mas se tiver der... CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
bioshock Posted March 21, 2014 Report Share Posted March 21, 2014 (edited) Eu fazia desta forma: construía uma função sobre o que o @Happy indicou na sua última frase. Depois disso colocava todas as palavras num array, definia um mínimo de length (de, da, os, etc não são aconselháveis) e por fim verificava quais as palavras mais utilizadas e atribuía-lhes uma percentagem. Sendo que as percentagens maiores obtinham um font-size maior. Edit: simples procura no google e encontrei links porreiros. https://sheriframadan.com/2012/05/creating-a-word-cloud-with-php/ http://lotsofcode.com/tag-cloud/ Edited March 21, 2014 by bioshock 1 Report Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Excelente ideia bio! Vou por essa solução. Obrigado. CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 21, 2014 Report Share Posted March 21, 2014 function createTags(tagid, minlength, max) { minlength = minlength ? minlength : 3; max = max ? max : 20; // strip HTML and empty lines var tokens = []; $.each($('#'+tagid).html() .replace(/(<([^>]+)>)/ig, ' ') .split(' '), function(index, value) { value = value.trim(); value && value.length >= minlength && tokens.push(value.trim()); }); // create tag list and entry count var tags = {}; $.each(tokens, function(index, value) { if (!tags[value]) tags[value] = 1; else tags[value] += 1; }); // sort the tags by greater hit to lower hit var sorted = []; for (var tag in tags) sorted.push([tag, tags[tag]]) sorted.sort(function(a, b) {return b[1] - a[1]}) return sorted.slice(0, max); } agora é só apresentação ... 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
yoda Posted March 21, 2014 Report Share Posted March 21, 2014 Mas eu repito a dúvida: Eu tenho uma página que carrega registos dinamicamente. Ou seja, carrega texto. Preciso de uma solução (server-side ou client-side, tanto faz) que analise o texto que é carregado na página e verifique quais os termos mais repetidos, para depois gerar uma tag cloud. Eu preferia um plugin em jQuery, já que seria mais fácil e rápido de implementar, mas se for uma solução server-side também serve. Muito mais claro assim, em vez de se usar palavras que se conhecem ambíguas. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Muito mais claro assim, em vez de se usar palavras que se conhecem ambíguas. Já reparaste que foste o único que não percebeste, certo? CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
yoda Posted March 21, 2014 Report Share Posted March 21, 2014 Sim, também reparei que só obtiveste respostas depois de explicares melhor o problema. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
jfosorio Posted March 21, 2014 Author Report Share Posted March 21, 2014 Mas tens alguma coisa a dizer relativamente ao problema em causa? É que se não tens... CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
yoda Posted March 21, 2014 Report Share Posted March 21, 2014 Já dei a minha contribuição, procura dar os nomes certos às coisas e terás a ajuda que precisas a tempo. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
I-NOZex Posted March 21, 2014 Report Share Posted March 21, 2014 eu tambem até a tua resposta até a tua resposta do yoda, tambem nao tinha entendido essa de plugin... plugin, na minha definição, é algo que estende funcionalidade de um sistema mais base... B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
jfosorio Posted March 24, 2014 Author Report Share Posted March 24, 2014 Eu também vou começar a escrever sem ter nada para dizer, só para subir o meu número de participações. (Esta já conta!) CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
jfosorio Posted March 24, 2014 Author Report Share Posted March 24, 2014 Tendo em conta as ajudas do Hippo e do Bio, eis a minha solução: function createTags(el, minlength, words_limit) { var $pane = $('div.tags_pane'); minlength = minlength ? minlength : 3; words_limit = words_limit ? words_limit : 20; // strip HTML and empty lines var tokens = [], words = []; $.each($(el), function() { words = $(this).html().replace(/(<([^>]+)>)/ig, ' ').replace(/([;,.!?]+)/ig, ' ').split(' '); $.each(words, function(i, val){ val = val.trim(); val && val.length >= minlength && tokens.push(val.trim()); }); }); // create tag list and entry count var tags = {}; $.each(tokens, function(index, value){ if(!tags[value])tags[value] = 1; else tags[value] += 1; }); // sort the tags by greater hit to lower hit var sorted = []; for(var tag in tags) sorted.push([tag, tags[tag]]) sorted.sort(function(a, b){return b[1] - a[1]}); sorted = sorted.slice(0, words_limit); sorted.sort(function() { return 0.5 - Math.random() }); for(var i = 0; i < sorted.length; i++){ size = (sorted[i][1] + 6) * 2.6; $pane.append('<span style="font-size:' + size + 'px;">' + sorted[i][0] + '</span> '); } } Aproveitei o código do Hippo e fiz algumas adaptações, de forma a atribuir um tamanho a cada tag (conforme o Bio disse) e "colar" logo no elemento HTML. Obrigado pela ajuda. 1 Report CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook! Portal de Informática it4life - Emprego, notícias, fórum, comunidade. Link to comment Share on other sites More sharing options...
I-NOZex Posted March 24, 2014 Report Share Posted March 24, 2014 eu tambem vou começar a ser evasivo, porque é assim que me vao ajudar mais 😉 B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
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