Condicionais nos posts da home do Blogger

edit 9 comentários
Chute Fácil - Bolão da Copa do Mundo | Especial Notebooks Sony Vaio | Celulares Desbloqueados

A maioria das dúvidas e pedidos que recebo referem-se ao uso das condicionais na área de postagens para diferenciação de páginas.


Fica muito complicado eu postar tutoriais para cada pedido, ou ensinar cada um individualmente, porque são muitas as variações que me pedem e que podem ser aplicadas.

Prefiro então, ensinar a vocês o conceito, e depois é só deixar a preguiça de lado e usar sua criatividade em um blog de testes, ok? :P

Vou usar exemplos complexos, cheios de condicionais, para explorar bem o assunto. Hoje será um exemplo para a home. Depois veremos como ampliar este exemplo, complicando mais um pouco e diferenciando outras páginas.

Vejamos como é o código dos posts.

Obs.: Este é o código do template Mínima - o seu pode ser um pouco diferente:

<!-- includable do post -->
<b:includable id='post' var='post'> 
<!-- início do post -->
  <div class='post hentry'> 
    <a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

<!-- linha abaixo do título do post -->
    <div class='post-header-line-1'/> 

<!-- início do corpo do post -->
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/> 
<!-- clear for photos floats -->
    </div>
  <!-- fim do corpo do post -->

<!-- início do jump-break "Leia Mais" -->
    <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
        <a expr:href='data:post.url + &quot;#more&quot;'>
<data:post.jumpText/></a>  
      </div>
    </b:if>
   <!-- fim do jump-break "Leia Mais" --> 

<!-- início do rodapé do post -->
    <div class='post-footer'>
    <div class='post-footer-line post-footer-line-1'>
<!-- códigos na linha 1 do footer -->
</div>

<div class='post-footer-line post-footer-line-2'>
<!-- códigos na linha 2 do footer -->
</div>

<div class='post-footer-line post-footer-line-3'>
<!-- códigos na linha 3 do footer -->
</div>

</div> <!-- fim do rodapé do post -->
  </div> <!-- fim do post -->
</b:includable> <!-- fim do includable do post -->

Prestem atenção em cada div - onde elas abrem e onde elas fecham. Essa é a parte mais complicada: abrir e fechar corretamente as divs e as condicionais b:if.

Entendendo o código, escolhemos o que queremos em cada nova classe que iremos criar, para que depois essas classes recebam estilos diferentes.

Vamos então começar com um exemplo, criando uma classe para o primeiro post da página inicial e uma classe para os outros posts, também da página inicial.

A condicional para a página inicial:
<b:if cond='data:blog.url == data:blog.homepageUrl'>

A condicional para primeiro post:

<b:if cond='data:post.isFirstPost == &quot;true&quot;'>

Daremos a essa classe o nome de first-post:

<div class='first-post'>

E a classe dos posts restantes será chamada de index-posts

No primeiro post da página inicial iremos colocar o título do post e o corpo do post (post-body) com o jump-break. Deixaremos de fora o rodapé do post (post-footer). Nos posts restantes colocaremos apenas o título do post. Precisaremos então usar a condicional b:if (SE) e b:else (SENÃO). As demais páginas terão o código normal dos posts do Blogger.

Decidido isso, iniciamos a montagem do código para os posts da página inicial, abrindo e fechando cada condicional b:if / b:else e as divs das classes first-post e index-posts (Escreva primeiro o código em um bloco de notas para visualizar certinho onde começam e terminam as tags):

<b:if cond='data:blog.url == data:blog.homepageUrl'>
<b:if cond='data:post.isFirstPost == &quot;true&quot;'>
<div class='first-post'>

<!-- AQUI SERÃO COLADOS OS CÓDIGOS ESCOLHIDOS PARA O PRIMEIRO POST -->

</div> <!-- fecha a div class first-post -->

<b:else/> <!-- condicional: se não for o primeiro post, o código será o seguinte -->

<div class='index-posts'>
<!-- AQUI SERÃO COLADOS OS CÓDIGOS ESCOLHIDOS PARA OS POSTS RESTANTES -->
</div> <!-- fecha a  div class index-posts -->

</b:if> <!-- fecha o código condicional para a página inicial  -->

<b:else/> <!-- condicional: se não for a página inicial, o código será o seguinte -->

<!-- AQUI FICARÁ O CÓDIGO DAS OUTRAS PÁGINAS -->

</b:if> <!-- fim das condicionais -->

Montamos a base do código condicional, agora precisamos copiar e colar nos locais corretos, os códigos dos posts do Blogger. Até fechar o código </b:if> que finaliza a condicional para a página inicial é fácil. Você deve prestar atenção no local onde colocar a última </b:if>.

Vamos então, primeiro, copiar o código do título do post, corpo do post e jump-break, que escolhemos para colocar no primeiro post e colar em nosso bloco de notas:

<!-- includable do post -->
<b:includable id='post' var='post'> 
<!-- início do post -->
  <div class='post hentry'> 

<!-- início da condicional para a Home Page -->
<b:if cond='data:blog.url == data:blog.homepageUrl'>

<!-- início da condicional para o First-Post -->
<b:if cond='data:post.isFirstPost == &quot;true&quot;'>
<div class='first-post'>
<!-- AQUI FICAM OS CÓDIGOS ESCOLHIDOS PARA O PRIMEIRO POST -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

<!-- linha abaixo do título do post -->
    <div class='post-header-line-1'/> 

<!-- início do corpo do post -->
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/> 
<!-- clear for photos floats -->
    </div>
  <!-- fim do corpo do post -->

<!-- início do jump-break "Leia Mais" -->
    <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
        <a expr:href='data:post.url + &quot;#more&quot;'>
<data:post.jumpText/></a>  
      </div>
    </b:if>
   <!-- fim do jump-break "Leia Mais" --> 

</div> <!-- fecha a div class first-post -->

<b:else/> <!-- condicional: se não for o primeiro post, o código será o seguinte -->

<div class='index-posts'>
<!-- AQUI SERÃO COLADOS OS CÓDIGOS ESCOLHIDOS PARA OS POSTS RESTANTES -->
</div> <!-- fecha a  div class index-posts -->

</b:if> <!-- fecha o código condicional para a página inicial  -->

<b:else/> <!-- condicional: se não for a página inicial, o código será o seguinte -->

<!-- AQUI FICARÁ O CÓDIGO DAS OUTRAS PÁGINAS -->

</b:if> <!-- fim das condicionais -->

O código deve ser colado logo depois da div que inicia a área de posts. É recomendável repetir a âncora da ID do post, em cada condicional <a expr:name='data:post.id'/>

Nos demais posts, escolhemos colocar apenas o título dos posts. Pegamos então o código do título e colamos no local adequado no bloco de notas:

<!-- includable do post -->
<b:includable id='post' var='post'> 
<!-- início do post -->
  <div class='post hentry'> 

<!-- início da condicional para a Home Page -->
<b:if cond='data:blog.url == data:blog.homepageUrl'>

<!-- início da condicional para o First-Post -->
<b:if cond='data:post.isFirstPost == &quot;true&quot;'>
<div class='first-post'>
<!-- AQUI FICAM OS CÓDIGOS ESCOLHIDOS PARA O PRIMEIRO POST DA HOME -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

<!-- linha abaixo do título do post -->
    <div class='post-header-line-1'/> 

<!-- início do corpo do post -->
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/> 
<!-- clear for photos floats -->
    </div>
  <!-- fim do corpo do post -->

<!-- início do jump-break "Leia Mais" -->
    <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
        <a expr:href='data:post.url + &quot;#more&quot;'>
<data:post.jumpText/></a>  
      </div>
    </b:if>
   <!-- fim do jump-break "Leia Mais" --> 

</div> <!-- fecha a div class first-post -->

<b:else/> <!-- condicional: se não for o primeiro post, o código será o seguinte -->

<div class='index-posts'>
<!-- AQUI FICAM OS CÓDIGOS PARA OS POSTS RESTANTES DA HOME -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

</div> <!-- fecha a  div class index-posts -->

</b:if> <!-- fecha o código condicional para a página inicial  -->

<b:else/> <!-- condicional: se não for a página inicial, o código será o seguinte -->

<!-- AQUI FICARÁ O CÓDIGO DAS OUTRAS PÁGINAS -->

</b:if> <!-- fim das condicionais -->

O código condicional para a página inicial está montado. Agora você deve colar o código completo do post no local indicado, desde <a expr:name='data:post.id'/> até a /div que fecha o post-footer. Ou seja, a /b:if que finaliza as condicionais deverá ficar entre a /div que fecha o post-footer e a /div que fecha a área dos posts.

<!-- includable do post -->
<b:includable id='post' var='post'> 
<!-- início do post -->
  <div class='post hentry'> 

<!-- início da condicional para a Home Page -->
<b:if cond='data:blog.url == data:blog.homepageUrl'>

<!-- início da condicional para o First-Post -->
<b:if cond='data:post.isFirstPost == &quot;true&quot;'>
<div class='first-post'>
<!-- AQUI FICAM OS CÓDIGOS ESCOLHIDOS PARA O PRIMEIRO POST DA HOME -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

<!-- linha abaixo do título do post -->
    <div class='post-header-line-1'/> 

<!-- início do corpo do post -->
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/> 
<!-- clear for photos floats -->
    </div>
  <!-- fim do corpo do post -->

<!-- início do jump-break "Leia Mais" -->
    <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
        <a expr:href='data:post.url + &quot;#more&quot;'>
<data:post.jumpText/></a>  
      </div>
    </b:if>
   <!-- fim do jump-break "Leia Mais" --> 

</div> <!-- fecha a div class first-post -->

<b:else/> <!-- condicional: se não for o primeiro post, o código será o seguinte -->

<div class='index-posts'>
<!-- AQUI FICAM OS CÓDIGOS PARA OS POSTS RESTANTES DA HOME -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

</div> <!-- fecha a  div class index-posts -->

</b:if> <!-- fecha o código condicional para a página inicial  -->

<b:else/> <!-- condicional: se não for a página inicial, o código será o seguinte -->
<!-- AQUI FICA O CÓDIGO DAS OUTRAS PÁGINAS -->
<a expr:name='data:post.id'/>
<!-- início do título do post -->
    <b:if cond='data:post.title'>
      <h3 class='post-title entry-title'>
     <b:if cond='data:post.link'>
       <a expr:href='data:post.link'>
<data:post.title/></a>
     <b:else/>
        <b:if cond='data:post.url'>
          <a expr:href='data:post.url'>
<data:post.title/></a>
        <b:else/>
          <data:post.title/>
        </b:if>
     </b:if>
      </h3>
    </b:if>
<!-- fim do título do post -->

<!-- linha abaixo do título do post -->
    <div class='post-header-line-1'/> 

<!-- início do corpo do post -->
    <div class='post-body entry-content'>
      <data:post.body/>
      <div style='clear: both;'/> 
<!-- clear for photos floats -->
    </div>
  <!-- fim do corpo do post -->

<!-- início do rodapé do post -->
    <div class='post-footer'>
    <div class='post-footer-line post-footer-line-1'>
<!-- códigos na linha 1 do footer -->
</div>

<div class='post-footer-line post-footer-line-2'>
<!-- códigos na linha 2 do footer -->
</div>

<div class='post-footer-line post-footer-line-3'>
<!-- códigos na linha 3 do footer -->
</div>

</div> <!-- fim do rodapé do post -->

</b:if> <!-- fim das condicionais -->

  </div> <!-- fim do post -->
</b:includable> <!-- fim do includable do post -->

Escrito o código HTML, na parte de estilos você usa as classes que nomeamos e coloca os estilos que preferir:

.post h3{
/* estilos para o título do post nas outras páginas */
}

.first-post h3{
/* estilos para o título do primeiro post */
}

.index-posts h3{
/* estilos para o título dos outros posts da home */
}

.post-body{
/* estilos para o corpo do post nas outras páginas */
}

.first-post .post-body{
/* estilos para o corpo do post do primeiro post */
}

.index-posts .post-body{
/* estilos para o corpo do post dos outros posts da home */
}


etc....


Observação:
Sem querer ser antipática, e já sendo... :P

Não dá prá ficar atendendo cada dúvida individual, me desculpem!

Perguntas como:
queria tirar a data
quero mudar a imagem na home
nos outros posts quero colocar o link dos comentários

vão ficar na geladeira enquanto eu não tiver tempo sobrando.

Já fiz um tutorial bem mastigadinho, é só navegar um pouco pelo BloggerSPhera e os outros blogs sobre o Blogger (vejam no meu blogroll), que tenho certeza que vocês acharão suas respostas conseguirão fazer do jeito que desejarem, tá? ;)

Comentários: 9

Marcos Gabriel Outubro 20, 2009 10:44 PM

Estou sumido *-*
mas é para uma duvida + novidade !

vc consegue fazer um formulario de comentario igual ao deste site ?
link o criador o fez usando form e talz (bem melhor que o iframe) e o melhor compativel com o blogger .
Enfim , se puder me ajudar a crialo por favor ...
rsrs

Rô Zanchetta Outubro 21, 2009 2:38 PM

Oi Gama! Tá sumido mesmo :O

Não é difícil montar o formulário, mas não consegui resolver 2 problemas:

1) O formulário usa script PHP (como a maioria dos forms com method='post') e não consigo achar uma hospedagem grátis pra rodar o script. Não tentei aquelas que precisam de registros complicados. Os hosts tipo RipWay não rodaram.

O arquivo php é este:
bloggercomment.php

Se você conseguir um host que rode PHP me passe o link e testo de novo.

2) Não consegui ativar a moderação. O comentário é publicado mesmo com a moderação configurada no Blogger. Eu teria que fuçar o código do script prá ver se acho um jeito, mas sem host que rode, nem dá prá fazer testes.

Prá montar o form, coloque o código abaixo no lugar do código do comment-form:

código-form-comentarios.txt

Testa com o php do blog que vc deixou o link (http://www.ctrlcblog.com.br/bloggercomment.php) - hospedagem do Blog do CTRL+C no Wordpress. Dá certinho :D

Pena que o Blogger não hospeda :(

Beijão!

Marcos Outubro 21, 2009 10:41 PM

N ro ...

este ai é o script JS gerado do php , este não é o PHP em si ..
então n serve x)

portalnerd.com Outubro 22, 2009 1:26 AM

Olá Rô, esse tutorial está fantástico, você fez um ótimo trabalho ai.

Andei estudando um pouco dos códigos da plataforma blogger e confesso que não tem mistério, só é necessário dedicação e um tempo sobrando.

Parabéns pelo trabalho.

Abçs!

nando for fun Outubro 24, 2009 5:00 PM

Olá Rô faz mais barato ae pra nois !!!
tá ino muito rápido¨¨O¨¨¨¨O¨¨

Rô Zanchetta Outubro 26, 2009 7:37 PM

Gama: Estou meio aperriada prá ver isso direito agora. Coloquei na lista de tarefas, assim que der, olho com mais calma, tá?

Oi Douglas! Também acho simples (até demais) a estrutura do Blogger. Com conhecimentos básicos de HTML e programação eu faço a festa... hehe. Obrigada, viu?

Nando: Ah.. vai.. tá mastigadinho.. não choramingue.. :P

Abraços, pessoal!

Rodrigo Lacerda Novembro 30, 2009 2:52 PM

Para quem comentou sobre o formulário de comentário do CTRL+C: é um script em PHP feito por mim que cuida de alguns dados necessários para o comentário ser enviado.

Fiz na época que ainda utilizava o Blogger como plataforma para publicações, e continua funcionando até hoje. Está hospedado no meu domínio que está rodando Wordpress hoje.

Podem utilizar o link da minha própria hospedagem por enquanto, mas não garanto que vai funcionar pelo resto da vida.

Rodrigo Lacerda Novembro 30, 2009 2:53 PM

Ahh... e o SuperAtiva também utiliza o meu script mesmo. É o blog da minha ex-namorada =P

Postar um comentário

Para deixar o link da sua última postagem coloque este código:
<em><strong>Seu nome</strong> publicou um post sobre.. <a href="seu-link-do-último-post">Título do Post</a></em>

Quando você estiver testando algum hack e tiver dúvidas sobre ele, informe:
1 - O endereço do blog onde você está testando (ou instalando o hack);
2 - O navegador que você está usando (Firefox, Opera, IExplorer, etc).

Leia sobre a política de Comentários!

Eu gosto de conhecer meus leitores! Se você usar OpenId ou perfil fechado, assine o comentário com seu nome e me deixará muito contente!

Bem-vindos e obrigada pela visita!

Feed dos Comentários