Nível: avançado
Infelizmente 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.
Desde o dia 11 de agosto estou usando neste blog um script legal que faz isso com precisão baseado nos marcadores que os posts têm em comum.
Eu até encontrei algumas traduções desse recurso, mas assim como ocorreu com o formulário de comentários embutido no post, só funcionou no meu blog depois que eu fui à fonte e traduzi por minha conta.
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.
- 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> - 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> - 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&callback=related_results_labels&max-results=10"' type='text/javascript'/>
</b:if>
</b:loop>
</b:if> - 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' /> - Substitua por:
<div class='post-footer-line post-footer-line-3'>
<b:if cond='data:blog.pageType == "item"'>
<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. Salve.
Tradução do tutorial do PurpleMoggy's Blog aproveitando idéias do tutorial do Blosque.com.
Reprodução não autorizada é fraude e dá multa. Lei 9.610 de 1998.




23 comentando:
Helen, não encontrei nenhum *class='post-footer-line post-footer-line-2*, nem nada parecido. O que faco?
LR, passa o endereço do seu blog para a gente ver o que ocorre. ;)
Muito legal seu blog. Um monte de coisa legal e útil. Parabéns!
Obrigado por visitar o nosso blog.
Pedro
Olá helena tudo bem? bom fiz corretamente e deu certo só que queria esse codigo nos posts na pagina inicial. Porque só aparece os posts relacionados quando é aberto 1 post separado entendeu?
www.blogaioh.blogspot.com
abraços para você!
aguardo respostas
MUITO OBRIGADA
mandou bem pra caramba nesse tutorial
abraços
Adri Amorim
Adri, obrigada. Gostei muito dos seus blogs. Parabéns!
Estou com o mesmo problema do leitor LR.
Não há no meu template nada como: class='post-footer-line post-footer-line-2.
Segui todos os passos bem, mas o ultimo não deu por isso.
Agnaldo, eu olhei seu blog, acho que no seu o rodapé do post está assim:
<p class="postmetadata">
Então pode colocar nessa classe do post.
Cara Helen,
Infelizmente só aparece o nome LEIA TAMBÉM, mas sem os posts relacionados.
Talvez o meu template não de pra fazer isso.
Eu acho.
Agnaldo, eu olhei seu código e vi que você configurou para mostrar 20 posts relacionados. Você tentou com menos primeiro? Tenta com 5 primeiro, depois vai aumentando para ver o máximo que dá certo.
Olá Helen,
Desculpe por tá dando trabalho.
Diminui para 5 e não aparece.Se puder olha no meu blog. Qdo clico no titulo de um artgio, aparece só o nome:Posts Relacionado, mas as postagens não.
OI Helen,
Eu fiz tudo direitinho, só que não apareceu nada no meu blog.
Porque será?
Entrei no seu blog e não vi o código lá. o_O
Oi Helen
Valeu pela dia.
Funcionou direitinho. É só prestar atenção na última etapa quanto às tags p ou div.
Abraços
Fiz tudo como esta dizendo ali, mas porém quando cliquei para ver uma postagem somente estava o texto " Leia também " e as postagens relacionadas nada. Se você poder me ajudar entre no meu blog ou me envie um email.
Obrigado!!!
Oi Helen...
Pois bem, não tenho o trecho
(b:if cond='data:post.labels')
Já procurei um que seja parecido mas não encontrei, se puder me ajudar.
Meu blog é http://rubiorc.blogspot.com/
Obs.: Os parênteses foram trocados só para ser aceito.
Obrigado.
Rubio.
Rubio, você tem que configurar seu blog para exibir os marcadores no post. Só vai aparecer quando você configurar assim.
Oi Helen, eu aqui de novo.
De origem, o template do meu blog por ser convertido de Wordpress para Blogger não tinha os marcadores mesmo. Então peguei de um template padrão e coloquei lá, funcionou belezinha.
Agora esses posts relacionados não está dando certo. Dê uma passadinha por lá e veja o que está acontecendo por favor, se puder é claro.
Pode verificar também no Blog de Teste - http://blog-de-teste-1.blogspot.com/.
Abraço, aguardo resposta.
Oi!
Valeu aí pelos codigos. Muito bom.
Bah eu fiz tudo como tu explico. O problema é que aparece só o "leia também:", porque os posts não aparecem? Obrigado.
Helen,
Magnífico, adicionei os códigos conforme suas orientações e..... Funcionou!!
Obrigado,
Fabio Velasco
Único tutorial que pego no meu blog!
@Filipe, que bom! :)
Postar um comentário
Atenção!
Se não quiser usar login, use a opção Nome/URL, sendo que a URL é opcional. Comentários anônimos têm mais chances de serem descartados na moderação.
Após enviar você não verá seu comentário publicado na página imediatamente, portanto não precisa comentar duas vezes a mesma coisa.
Seja organizado: use a tecla Enter para separar os parágrafos e use tags para enriquecer o texto: <b> (negrito), <i> (itálico), <a> (link).
Por falar em links, eles só são aceitos no corpo da mensagem se tiverem TOTAL relação com o tema do post. Se quiser apenas deixar o link do seu blog, comente usando a opção Nome/URL.
Para ser notificado via Twitter quando eu responder ao comentário, basta assinar com seu @nomedeusuario.
Não respondo comentários por e-mail, portanto só deixe seu endereço no corpo da mensagem se quiser ser vítima de spam. Para mensagens privadas, use o formulário de contato.
Sugestões de posts só são estudadas quando enviadas via formulário.
Obrigada!