blogroll

Seu próprio Blogroll usando Delicious

Antes de mais nada, blogroll é uma coleção de links para outros blogs. Este termo é como é conhecido internacionalmente, apesar de eu colocar em meu blog com o título Blogs amigos, tentando parecer mais amigável ao leigo (bom trocadilho, né?).

Já faz um bom tempo que mantenho esse Blogroll em meu blog. Para fazer esse blogroll antigo, eu usava dois serviços: o delicious com sua exportação para RSS e o módulo Drupal agregador de conteúdo, que é capaz de criar um bloco para um certo RSS.

Eu criei uma tag "blog" no Delicious e comecei a jogar lá todos os blogs que achava interessantes (freqüentemente, os blogs cujo RSS eu também assino). É daí que vêm minha lista de blogs amigos.

Mas havia alguns inconvenientes nessa estratégia, dentre os quais posso citar dois como principais: a dificuldade de personalizar o blogroll apenas, sem interferir em outros blocos gerados pelo mesmo esquema; e, o principal, a ordem em que aparecem os blogs ser a partir dos mais novos.

É interessante mostrar a partir dos mais novos, mas quando se trata de um blogroll com muitos blogs na fila, começa a ficar bem injusto, pois os blogs mais antigos terminam nunca mais aparecendo.

Como sera o ideal? Uma forma de pegar todos os blogs que cadastrei, escolher alguns deles (10, por exemplo) ao acaso e mostrá-los. Assim todos teriam chances iguais de aparecer.

Passei hoje no Delicious e descobri que ele oferece uma forma de manipular essas informações para apresentarmos da forma que quisermos. Sim, um arquivinho JavaScript com todo o conteúdo facilmente acessível.

A partir do exemplo que o Delicious apresenta, fiz um blogroll do jeitinho que eu queria, e mais: com o ícone de cada site!

Quem quiser usar essa idéia, fique à vontade! Aqui está o código, e você só precisa mudar o endereço http://del.icio.us/feeds/json/bardo/blog?count=100 no código, trocando bardo por seu login e blog pela tag que você usa, e definir em qtShow para a quantidade de blogs que você quer mostrar no seu blogroll. Claro que, desde que saibam o que estão fazendo, estão livres para mudar bem mais que isso no código...

<div id="myblogroll"></div>
<script type="text/javascript" src="http://del.icio.us/feeds/json/bardo/blog?count=100"></script>
<script type="text/javascript">
qtShow =13
function showImage(img){
return (function(){
img.style.display='inline'
})
}
function randOrd(a,b){
return (Math.round(Math.random()) -0.5)
}
ul =document.createElement('ul')
ul.style.listStyle ="none"
allp =new Array()
for (i in Delicious.posts){
allp.push(Delicious.posts[i])
}
allp.sort(randOrd)
last =(allp.length >qtShow) ?qtShow :allp.length -1
for(i =0; i <=last; i++){
post =allp[i]
li =document.createElement('li')
a =document.createElement('a')
a.style.marginLeft ='20px'
img =document.createElement('img')
img.style.position ='absolute'
img.style.display ='none'
img.height =img.width =16
img.src =post.u.split('/').splice(0,3).join('/')+ '/favicon.ico'
img.onload =showImage(img)
a.setAttribute('href',post.u)
a.appendChild(document.createTextNode(post.d))
li.appendChild(img)
li.appendChild(a)
ul.appendChild(li)
}
document.getElementById('myblogroll').appendChild(ul)
</script>

E pronto! É só colocar em um bloco no template do seu site e você tem o seu próprio blogroll, de facílima manutenção (é só adicionar links pelo Delicious).

Notas Anexas

Primeiro, o especialista em JavaScript aqui simplesmente não sabia que esta linguagem tinha uma estrutura de dados similar a Array (simplificado) sem usar a classe Array. Alguém sabe mais a respeito? Sabe um jeito mais prático de converter para Array ou contar seus elementos? Se alguém souber, eu agradeço!

Outra: se você tem um blog e tem acesso aos arquivos do blog, por favor coloque um favicon.ico na raiz do PATH do seu blog! Com isso, seu blog aparecerá com ícone nos blogs que usarem este código e te adicionarem.

Subscribe to RSS - blogroll

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0