04 março, 2009

Como Exibir Posts Relacionados no Blogger

O Blogger ainda não tem a opção de exibir os posts relacionados ao final do texto, para facilitar a vida do leitor e aumentar o tempo de permanência dele no blog.
Mas existe uma forma de se conseguir isso. Achei no blog Htmhelen e agora trago para vocês:
Este script é um tanto quanto complicado, por isso peço que use um blog de teste para não fazer besteira. Para visualizar o resultado crie neste blog de testes pelo menos cinco posts fictícios usando a mesma tag/marcador/label.

Continue Lendo...

  1. Clique em Layout, Editar HTML. Cole o seguinte código antes da tag </head>: Onde está escrito 5 você pode substituir pelo número de posts relacionados que você deseja mostrar.
    <script type="text/javascript">
    //<![CDATA[
    var relatedTitles = new Array();
    var relatedTitlesNum = 0;
    var relatedUrls = new Array();
    function related_results_labels(json) {
    for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    relatedTitles[relatedTitlesNum] = entry.title.$t;
    for (var k = 0; k < entry.link.length; k++) {
    if (entry.link[k].rel == 'alternate') {
    relatedUrls[relatedTitlesNum] = entry.link[k].href;
    relatedTitlesNum++;
    break;
    }
    }
    }
    }
    function removeRelatedDuplicates() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    for(var i = 0; i < relatedUrls.length; i++) {
    if(!contains(tmp, relatedUrls[i])) {
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[i];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[i];
    }
    }
    relatedTitles = tmp2;
    relatedUrls = tmp;
    }
    function contains(a, e) {
    for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
    return false;
    }
    function printRelatedLabels() {
    var r = Math.floor((relatedTitles.length - 1) * Math.random());
    var i = 0;
    document.write('<ul>');
    while (i < relatedTitles.length && i < 5) {
    document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></li>');
    if (r < relatedTitles.length - 1) {
    r++;
    } else {
    r = 0;
    }
    i++;
    }
    document.write('</ul>');
    }
    //]]>
    </script>
  2. Salve. Clique em Expandir modelos de widgets. Procure o seguinte código:
    <b:if cond='data:post.labels'>
    <data:postLabelsLabel/>
    <b:loop values='data:post.labels' var='label'>
    <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
    </b:loop>
    </b:if>
  3. Substitua pelo código abaixo: A parte em destaque é o que será realmente acrescentado.
    <b:if cond='data:post.labels'>
    <data:postLabelsLabel/>
    <b:loop values='data:post.labels' var='label'>
    <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
    <b:if cond='data:blog.pageType == "item"'>
    <script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&amp;callback=related_results_labels&amp;max-results=10"' type='text/javascript'/>
    </b:if>

    </b:loop>
    </b:if>

  4. Salve. Procure (ainda em modo expandido) o código que pode ser:
    <div class='post-footer-line post-footer-line-3' />

    ou
    <p class='post-footer-line post-footer-line-3' />
  5. Substitua por:
    <div class='post-footer-line post-footer-line-3'>
    <b:if cond='data:blog.pageType == &quot;item&quot;'> <b:if cond='data:blog.url != data:blog.homepageUrl'><h4>Leia também:</h4></b:if> <script type='text/javascript'> removeRelatedDuplicates(); printRelatedLabels(); </script> </b:if>
    </div>

    Se você não encontrar nenhum p ou div que use class='post-footer-line post-footer-line-3', crie-a logo abaixo da tag que fecha class='post-footer-line post-footer-line-2'. Onde está escrito Leia também você pode escrever o texto de sua preferência.

3 comentários:

  1. Meus parabéns!!! venho atraz de um tutorial desse a tempos, ficou bom no meu blog, agradeço e muito. Vou seguir seu blog + uma vez parabéns.

    ResponderExcluir
  2. Parabéns pelos seu post. Principalmente para o último detalhe. Muito interessante seu cuidado. Pena que não resolveu meu problema (hehehe)
    Coloquei no meu blog assim mesmo, mas ficou em lugar errado.
    Meu template é adaptação do WordPress, e não tem nenhuma opção das que você postou, nem mesmo tem post-footer. Tentei achar algo parecido, mas como não entendo de html...
    De qualquer forma seu post me ajudou muito. Obrigada.
    ABÇão

    ResponderExcluir
  3. Valew mesmo. O VIP tava precisando muito disso. E o mais incrível é que consegui. Um tutorial imenso. Quase num acreditei que deu certo. Pq num entendo nada de blog. hehe.
    Sou fão do Dicas. Abração.

    ResponderExcluir

Abaixo segue uma pequena lista de coisa para que tenha-se mais ou menos uma ideia do que se deve e não deve se fazer.

- Seu comentário precisa ter relação com o assunto do post;
- Comente com conteúdo. Se não tiver nada para escrever, não escreva;
- Não inclua links desnecessários no conteúdo do seu comentário;
- CAIXA ALTA (Caps Lock ativado), Internetês ridículo ou erros horríveis de ortografia não serão tolerados;
- Ofensas pessoais, ameaças e xingamentos não são permitidos;
- Parceria? aqui não é lugar para isso, entre em Contato Conosco Pelo Email;

OBS: Os comentários não refletem as opiniões do autor.