terça-feira, 3 de janeiro de 2012

(Blogger) Posts random na home do blogspot

Artigo Inédito

Levei dias para construção deste sistema, fiquei quase uma madrugada testando e corrigindo novos bugs. Após tanto trabalho consegui fazer este sistema inédito que mostra post aleatórios nas páginas do blog.

O sistema usa Javascript com JSON para pegar as informações básicas do post em uma página de feeds do blog. Então depois usa Ajax em javascript para fazer a requisição na página php para pegar as informações do conteúdo completo do pot!

Quais vantagens em usar? Muitas, por exemplo
- Maior visibilidade aos posts antigos
- Maior visitas ao blog, devido a variedade de posts sempre exposta no blog
- As novas postagens se misturam com as velhas na página principal, não desvalorizando-as

Vá em
design -> editar html -> expandir modelos de widgets

Na caixa de texto contém vários códigos ..

Primeiramente procure por:

</head>

Após achar coloque o seguinte código acima:

<script>
var totalPosts =0;
var postId =new Array();
var maxPost = 4;
var chamado = false;
var sitePost = "http://www.brunodasilva.com.br/";
</script>

(não esqueça de mudar o site brunodasilva.com.br para seu blog. A barra no final é necessária, o http:// também)

Após as instruções acima vamos para o segundo passo. Ainda na página dos códigos procure pelo seguinte trecho:

<b:includable id='post' var='post'>

Após encontrar o trecho acima, substitua brevemente pelo seguinte trecho:

<b:includable id='post' var='post'>
<b:if cond='data:blog.pageType != "item"'>
<b:if cond='data:blog.pageType != "static_page"'>
<script>
var artigofixa = "<data:blog.pageType/>";

//<![CDATA[
var endereco = location.href;
if(endereco.indexOf("search?q") == -1 && endereco.indexOf("search/") == -1 && artigofixa != "item" && artigofixa  != "static_page")
{
var tituloAtual = "<div class='post hentry'><h3 class='post-title entry-title' id='tituloRandom" + totalPosts + "'></h3>";
var corpoAtual = "<div id='novoPost" + totalPosts + "'></div>
</div>
";
totalPosts++;
document.write(tituloAtual + corpoAtual);
}
function antiLag(json) {
document.write("<script src=\"" + sitePost + "feeds/posts/summary?alt=json-in-script&callback=escolherRandom&max-results=" + parseInt(json.feed.openSearch$totalResults.$t, 10) + "\"><\/script>");
}
function adicionarNaPagina(postid)
{
for (k = 0; k < postId[postid].link.length; k++) {
if (postId[postid].link[k].rel == 'alternate') {
var postlink = postId[postid].link[k].href;
var xmlhttp = getXmlHttpRequest();
xmlhttp.open("GET", "http://ips-team.herobo.com/blogspot.php?posturl=" + postlink, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
document.getElementById("novoPost" + postid).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
document.getElementById("tituloRandom" + postid).innerHTML = "<a href='" + postlink + "'>" + postId[postid].title.$t + "</a>";
break;
}
}
return true;
}
function escolherRandom(json)
{
if(chamado == true || !maxPost) return true;
chamado = true;
var min = 0;
var max = parseInt(json.feed.openSearch$totalResults.$t, 10);
var random = Math.floor(Math.random() * (max - min + 1)) + min;
postId[0] = json.feed.entry[random];
if(random > (max-maxPost)) random -= max / 2;
if(random < (min+maxPost)) random += max / 2;
for(i= maxPost; i > 0; i--)
{
postId[i] = json.feed.entry[random + i];
}
return adicionarNaPagina(0);
}
function getXmlHttpRequest()
{
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(endereco.indexOf("search?q") == -1 && endereco.indexOf("search/") == -1 && artigofixa != "item" && artigofixa  != "static_page")
{
adicionarNaPagina(0);
adicionarNaPagina(1);
adicionarNaPagina(2);
adicionarNaPagina(3);
adicionarNaPagina(4);
}
//]]>
</script>
<script src='http://brunodasilva.com.br/feeds/posts/default?alt=json-in-script&callback=antiLag'/>
</b:if></b:if>

Agora apenas mude a url brunodasilva.com.br para seu blog.
Lembre-se de não mudar a url "ips-team". Este é o site que faz a requisição do conteúdo completo do post!

Espero que tenham gostado deste tutorial.

Desenvolvido por Bruno da Silva.


Atualizado 04/01/2012

2 comentários:

  1. cara eu vou tentar ! se funcionar vc é um MESTRE!

    ResponderExcluir
  2. Amigo, tentei mas não deu certo.. ele não salva o código diz que alguma "coisa" não está fechada corretamente...

    ResponderExcluir