Design diferente - Páginas Inicial e Internas

edit 19 comentários
Chute Fácil - Bolão da Copa do Mundo | Especial Notebooks Sony Vaio | Celulares Desbloqueados
Sendo o estilo magazine, ou estilo revista, um dos modelos preferidos para os templates do Blogger, o design ou layout da página inicial do blog diferente das páginas internas dos posts, cai como uma luva.

Seria complicado eu montar um tutorial do tipo passo a passo para mostrar como fazer isso, pois as variações são tantas (1 sidebar, 2 sidebars, header em colunas, footer em colunas, com "leia mais", sem "leia mais"), que eu passaria um mês só escrevendo tutoriais nesse sentido.

O mais importante, portanto, é entender (e é muito fácil) como usar as condicionais e onde colocar os estilos. Vou usar um exemplo, mas não se prenda a ele. Seja criativo para deixar o blogger com seu jeito.

A) Antes de mais nada, uma pitadinha básica de HTML e tags do Blogger


Para escrever uma folha de estilos, você precisa dizer ao navegador que aquilo é... uma folha de estilos (CSS). O navegador vai entender isso quando você inicia sua CSS com a tag

<style type="text/css">

e fecha com a tag

</style>.

Agora veja o código fonte de seu blog (Ctrl U ou Exibir - Código Fonte). Depois das meta content, link rel, title, etc e antes de Blogger Template Style, você verá uma linha assim:


<style id='page-skin-1' type='text/css'><!--


E lááá no final dos estilos (depois dos estilos do footer e antes de </head>) tem uma linha:


--></style>


É o mesmo código que mencionei acima, mas o Blogger identifica essa folha de estilos com uma id='page-skin-1'.

No código (aba "Editar HTML") de seu template você não consegue enxergar, porque está escrito de outra maneira. Vamos lá ver como está a abertura da tag style antes de Blogger Template Style:


<b:skin><![CDATA[


e o fechamento antes de </head>:


]]></b:skin>


Então, estamos entendidos? Tudo o que estiver entre <b:skin> e
</b:skin> será a mesma coisa que estivesse entre <style type="text/css"> e </style>, e só deverá conter códigos CSS. Se você for colocar tag HTML b:if aí dentro, não vai dar certo.

Para poder usar as tags condicionais (aprenda sobre elas lendo Widgets diferentes para cada página), vamos criar novas folhas de estilo com as tags <style type="text/css"> e </style>.

B) Códigos CSS (estilos) que devem ficar entre <b:skin> e
</b:skin>


Teoria legalzinha, mas como eu faço páginas diferentes? - você deve estar perguntando...

Simples assim:
  • Estilos para todas as páginas dentro das tags <b:skin> e
    </b:skin> do Blogger;
  • Condicional b:if (SE) indicando que você quer os estilos a seguir em todas as páginas menos as internas dos posts;
  • Estilos para as páginas - menos as internas dos posts - entre as tags <style type="text/css"> e </style>;
  • Tag b:else (SENÃO) indicando que os estilos a seguir deverão ser aplicados quando não obedecerem a condicional anterior;
  • Estilos para as páginas internas dos posts entre as tags <style type="text/css"> e </style>;
  • Fechamento da tag b:if.


Primeiro vamos definir quais serão os estilos que deverão continuar entre as tags <b:skin> e </b:skin>.

O exemplo que vamos usar é um bem simples, para você começar a treinar. Depois você poderá ficar mais atrevido e variar os estilos da maneira que desejar.

Faça um Blog de Testes com o Template Mínima com as medidas principais ampliadas para 860px (Header, Outer-Wrapper e Footer). O Header será simples e igual em todas as páginas, o Outer-Wrapper com mesmas medidas em todas as páginas e Footer simples em todas as páginas.



Na página inicial e nas outras páginas index (categorias e arquivos) o Main-Wrapper fica à esquerda com 410px e Sidebar-Wrapper à direita com duas sidebars de 210px cada.

Na página dos posts, tem apenas o main-wrapper com 840px, sem sidebar.



Começando a mexer no Blog de Testes:
  1. Depois de criar o blog de testes, escrever um ou dois posts, alguns comentários e acrescentar alguns widgets na sidebar, altere as medidas principais como mencionei acima: Header, Outer-Wrapper e Footer para 860px;
  2. Apague as medidas do Main-Wrapper e da Sidebar-Wrapper e deixe o restante, ficando assim:

    /* Outer-Wrapper
    ----------------------------------------------- */
    #outer-wrapper {
    width: 860px;
    margin: 0 auto;
    padding: 10px;
    text-align: $startSide;
    font: $bodyfont;
    }
    
    #main-wrapper {
    float: left;
    word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
    overflow: hidden;     /* fix for long non-text content breaking IE sidebar float */
    }
    
    #sidebar-wrapper {
    float: right;
    word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
    overflow: hidden;      /* fix for long non-text content breaking IE sidebar float */
    }
    
  3. Agora vamos criar uma sidebar extra no código do template, não precisa marcar a caixa "Expandir Modelos de Widgets". Localize o código da Sidebar-Wrapper e deixe da seguinte maneira, colocando um número para a primeira sidebar e acrescentando o código para a segunda sidebar:
    <div id='sidebar-wrapper'>
    <b:section class='sidebar' id='sidebar1' preferred='yes'>
    <b:widget id='Label1' locked='false' title='Marcadores' type='Label'/>
    <b:widget id='BlogArchive1' locked='false' title='Arquivo do blog' type='BlogArchive'/>
    <b:widget id='Image1' locked='false' title='Imagem' type='Image'/>
    <b:widget id='Followers1' locked='false' title='Seguidores' type='Followers'/>
    </b:section>  
    
    <b:section class='sidebar' id='sidebar2' preferred='yes'/>
    
    </div>
    
  4. Visualize o template para ver se está tudo ok com os códigos.

C) Códigos (condicional e estilos) para as páginas index


Depois de adicionada a segunda sidebar, vamos colocar os estilos para a página inicial, de categorias e arquivos, ou seja todas as páginas, menos as internas dos posts.

  1. Abaixo de ]]></b:skin>, acrescentamos a condicional, que traduzida é algo como Se o tipo de página for diferente da página interna dos posts:

    <b:if cond='data:blog.pageType != "item"'>
  2. Em seguida colocamos a tag <style> e os estilos:

<style type='text/css'>

#main-wrapper {
width: 410px;
}

#sidebar1 {
width: 210px;
float: left;
}

#sidebar2 {
width: 210px;
float: right;
}

</style>


D) Código (continuação da condicional e estilos) para as páginas internas dos posts


Não podemos continuar sem fechar a tag </style> porque precisamos colocar uma nova tag HTML (b:else - SENÃO) que não pode ficar dentro da CSS.

Após fechar a folha de estilos para a página inicial, colocamos a continuação da condicional: <b:else/> e abrimos mais uma folha de estilos para as páginas internas:

<b:else/>

<style type='text/css'>

#main-wrapper {
width: 840px;
}
</style>

</b:if>


Fechamos a folha de estilos com </style> e a condicional com </b:if>.

O código completo fica assim:

<b:if cond='data:blog.pageType != "item"'>

<style type='text/css'>

#main-wrapper {
width: 410px;
}

#sidebar1 {
width: 210px;
float: left;
}

#sidebar2 {
width: 210px;
float: right;
}

</style>

<b:else/>

<style type='text/css'>

#main-wrapper {
width: 840px;
}
</style>

</b:if>


Condicional no conteúdo


Definimos portanto, com esses procedimentos, quais estilos desejamos para as páginas index e quais serão para as páginas internas.

Agora precisamos informar ao navegador, também usando as condicionais, sobre o conteúdo.

O único conteúdo nesse nosso exemplo que não se repetirá em todas as páginas é o das sidebars.

Localizamos então o código de nossa Sidebar-Wrapper e colocamos a condicional:

<b:if cond='data:blog.pageType != "item"'>

<div id='sidebar-wrapper'>
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='Label1' locked='false' title='Marcadores' type='Label'/>
<b:widget id='BlogArchive1' locked='false' title='Arquivo do blog' type='BlogArchive'/>
<b:widget id='Image1' locked='false' title='Imagem' type='Image'/>
<b:widget id='Followers1' locked='false' title='Seguidores' type='Followers'/>
</b:section>  

<b:section class='sidebar' id='sidebar2' preferred='yes'/>

</div>
</b:if>

Fácil, não é?


  1. Se você quiser colocar vários blocos de sidebars em um tipo de página e um bloco só em outro, mantenha todas as sidebars dentro de um único container e distribua os blocos dentros das "section". Isso reduz código e dá menos problema na hora de usar este hack;
  2. Caso você deseje colocar as sidebars flutuando de um lado em um tipo de página e mudar a flutuação em outro, coloque os códigos de float nos estilos dentro das condicionais. Só é necessário colocar a flutuação dentro de skin se você não usar sidebar nas páginas internas, ou a(s) sidebar(s) irão escorregar para debaixo da área de postagens;
  3. Neste exemplo, como não há sidebar nas páginas internas, a condicional no conteúdo foi colocada para todo o container da sidebar (antes de div id='sidebar-wrapper). Altere o local, dependendo do que será mostrado nas index e nas iternas;


Dúvidas? Claro.. hehe

Fique à vontade para perguntar!

Comentários: 19

Thiago Martins Fevereiro 14, 2009 11:50 PM

Boa tava esperando essa dica, valeu mesmo Rô ;D
ja li ta bem didatico quando tiver tempo e a preguiça me larga eu faço =D

Obrigado Rô, bjs!!

GAMA Fevereiro 14, 2009 11:51 PM

existe tags do blogger que ao aceitas dentro do CSS , eu ja testei

:**

jogoscelular.net Fevereiro 15, 2009 8:24 AM

Realmente Rô só falta desenhar! Descobri hoje seu blog e seus tutoriais são muito bem explicados e fáceis de acompanhar.
Assim qualquer um pode ser blogueiro mesmo!

Parabéns pelo trabalho e continue assim.

Fabio Neves Fevereiro 15, 2009 1:54 PM

Muito Bom post

Segui o tuto direitinho, mas as "side" tem ficado abaixo da main

http: //testeindex.blogspot.com/

Fevereiro 15, 2009 10:58 PM

Fabio: Vi seu blog de testes mais cedo e prá mim estava certinho! Agora não sei se depois que você postou o comentário conseguiu acertar as sidebars ou se é problema de navegador. Qualquer dúvide, me fala de novo!

jogoscelular: Bem-vindo e obrigada! Eu tento.. :) Às vezes tenho a sensação de que escrevo demais... hehe

Gama: As tags são aceitas. Nem sempre funcionam como devem.. hehe

Thiago: Este post foi especialmente prá você e agora vai ficar com preguiça?? :P Bom, minha listinha de dívidas está diminuindo.. :)

Abração, meninos!

"Bauru" Fevereiro 15, 2009 11:15 PM

Será que dou conta de fazer isso... Eu sempre falo que vou sossegar e acabo mexendo no layout do blog. Bem, passei apenas pra agradecer pelos tutoriais bem escritos e explicativos. Beijos, moça!

"Bauru" Fevereiro 15, 2009 11:28 PM

Rô, você não pensa em disponibilizar esses templates de teste para download. Creio que seja uma excelente forma de divulgação. Você pega o Mínima, customiza e posta para os preguiçosos baixarem...rs.

Fevereiro 16, 2009 12:47 PM

Bauru: Pois é, está na minha lista de dívidas disponibilizar um template desses, estilo revista. Só está faltando tempo. Mas você sabe que a Rô tarda mas não falha... ahahaha

Obrigada e beijão!

Santos Fevereiro 28, 2009 5:40 PM

Rô,tem como fazer com que as postagens recentes não estejam na página inicial?Eu queria fazer uma página inicial estática onde não se mostraria postagens diretas como no UOL,G1 e demais.Assim as postagenas só apareceriam quando solicitadas pelos respectivos links.Obrigado desde já!

Fevereiro 28, 2009 6:41 PM

Santos: Esse é o projeto da nova versão do Coralina.
Tenho recebido muitas mensagens com essa mesma dúvida, então, nada melhor que demonstrar, né?

Abração!

"Usuário" Março 06, 2009 3:10 AM

Essa é a próxima dica que irei testar no meu "supertemplate" personalizado usando as dicas dos meus "amigos" e de minha amiga RÔ.

Março 11, 2009 8:14 PM

Rogério: Já fui fuçar! :)

Eu gosto do Mínima. Conheço ótimos blogs que usam o Mínima e são um sucesso. Vou citar 2 exemplos: Hoje vou assim e Hoje vou assim off.

O Google adora templates limpinhos... hehe

Beijão!

Leandro Tadeu Abril 23, 2009 12:21 AM

Buenas, Rô:
Instalei o template Coralina I e adorei. Só gostaria de saber se há uma maneira de reduzir a quantidade de elementos na sidebar quanto abrir uma página interna? Agradeço tua atenção. O blog é http://paineldosconcursos.blogas.com.br/ e o navegador em que testei foi o Firefox.

Abril 29, 2009 12:15 PM

Oi Leandro!

Veja este post: Widgets diferentes em cada páginaUse as condicionais para determinar quais widgets você quer em cada página.

Veja na Categoria Condicionais outras dicas úteis a respeito.

Abraços!

Anônimo Julho 10, 2009 11:08 AM

Olá,visito o seu blog para aprender um pouco.Criei um blog:ateliedataika.blogspot.com.Consegui fazer meu próprio back e tentei inserir um menu horizontal.Até aí consegui.Ainda que tenha modificado e feito uma pequena bagunça.Enfim...O problema é que não cosngio fazer com que os links funcionem.Por favor,poderia me ajudar?Quero começar a postar e dependo disso,já que desejo que fique tudo organizado.Desde já agradeço.
Ana Cristina

nando for fun Julho 23, 2009 2:27 PM

oi tudo bom...primeiro parabéns pela postam,você é genio mesmo...
é super fácil (espero que eu feito certo)eu sempre faço tudo no meio da fogueira msmo online sem medo de errar pq tenho poucos leitores...
quem aprende usar as tags condicionais ñ terão dificuldade alguma de aplicar os estilos...pocha vida é muito divertido meu blog tá o Ó DO BOROGODÓ tá parecendo um softwere(rs)...eu tiro meu chapeu pra qualquer um mais Essa Rô é sem palavras... vô continua acompanhando ai ,já dei um gourmet na nova tag e parece deliciosa(RS)..brigadão ñ vô me esquece de vc quando me perguntarem como persolizar o blog e encontra bons lay... a melhor do blogger "sem duvidas"vlw bjs

jader resende Agosto 19, 2009 10:24 AM

Ola, amigo.
Meus parabens pelo teu trabalho.
Não endendi nada, mas já é um começo.
Gostaria de saber como fazer um blogue de teste.
Tenho procurado e não encontro.
É preciso começar a entender.
Um abraço.
Jader Resende

nando for fun Agosto 20, 2009 1:59 PM

oi Rô montei minha pagina assim oh:
esse fraguemento de codigo está embaixo de b:skin...ficou ótimo c/ eu disse vc é a melhor msm...só que tenho umproblema c/ ie 8 que ñ consigo resolver sozinho ...é o seguinte(quando abro a pgn do post q tem a medida de 849 ela desse uns px e ñ alinha c/ a barrinha lateral e o header...isso ocorre somente nas pgns internas mais largas...qual sera o erro hein pode me dar uma luz???

b:if cond='data:blog.homepageUrl != data:blog.url'
style type='text/css'
#main-wrap1 {width:849px;float:$startSide; margin:0px 0 0;padding:0px 0 0 0px ;
color:$mainTextColor;font-size:97%;line-height:1.5em;
}
#main-wrap2 { float:$startSide;width:849px;padding-top: 0px!important ;
}
#main { width:849px;padding-top:30px;
}
.main .Blog {margin: 5px ;padding:0px;width: 98%;background:#eff7ff;
}
.post-body {margin:0px;background:#eff7ff;
}
.titulos {display:block;width: 100%; font-size:1.0em;padding:12px 0 0 0px;
margin:0px ;list-style:none;font-style:bold;padding-$startSide:0px;
background:#eff7ff!important;border-top:1px solid #ffffff;
}
/style
b:else/
style type='text/css'
#main-wrap1 {width:552px;float:$startSide;margin:0px 0 0;padding:0 0 0px ;
color:$mainTextColor;font-size:97%;line-height:1.5em;
}
#main-wrap2 { float:$startSide;width:552px;padding-top: 0px ;
}
.main .Blog {margin: 5px ; padding:0px;width: 97%;background:#ddeeff;
}
.post-body { margin:1px;background:#ddeeff;
}

/style
/b:if
b:if cond='data:blog.pageType == "archive"'
style type='text/css'
#main-wrap1 { width:552px;float:$startSide;margin:0px 0 0;padding:0 0 0px ;color:$mainTextColor;font-size:97%;line-height:1.5em;
}
#main-wrap2 { float:$startSide;width:552px;
padding-top: 0px ;
}
#mainsidebarbig-wrap1 {width:552px;float:$startSide ;margin:0px 0 0 ;padding:0 0 0 px;margin-left:150px ;color:$mainTextColor;font-size:97%;line-height:1.5em;
}
#mainsidebarnew-wrap1 {width:552px;float:$startSide ;margin:0px 0 0 ;padding:0 0 0 px;margin-left:150px;color:$mainTextColor;font-size:97%;line-height:1.5em;
}

#main { background: url("") repeat-y ;padding-top:30px;width:552px;
}
.main .Blog {margin: 5px ; padding:0px;width: 97%;background:#ffffff;
}
.post-body {margin:5px;background:#ffffff;

}
.titulos {display:block;width: 100%; font-size:1.0em;padding:12px 0 0 0px;
margin:0px ;list-style:none;font-style:bold;padding-$startSide:0px;
background:#ffffff!important;border-top:1px solid #d9e6f7;
}
/style
/b:if
b:if cond='data:blog.url == "http://wwwskate4fun.blogspot.com/search?max-results=200"'
style type='text/css'
#main-wrap1 {width:849px;float:$startSide;margin:0px 0 0;padding:0 0 0px ;
color:$mainTextColor;font-size:97%;line-height:1.5em;
}
#main-wrap2 { float:$startSide;width:849px; padding-top: 0px ;
}
#main { width:849px;padding-top:30px ;
}
.main .Blog {margin: 5px ;padding:0px;width: 98%;
background:#ffffff ;
}
.post-body {margin:5px;background:#ffffff ;
}
.titulos {display:block;width: 100%; font-size:1.0em;padding:12px 0 0 0px;margin:0px ;list-style:none;font-style:bold;padding-$startSide:0px;background:#ffffff!important;border-top:1px solid #d9e6f7;

}
/style
/b:if

nando for fun Agosto 27, 2009 12:11 AM

consegui resolver o alinhamento das divs ...a pgn mas larga usei a codicional exibir somente n pgn de postagen somente sem o else (sem a seguência para outra pgn)...

Então ficou assim...paginas mais largas editadas separadamente...
segunda chamada para a condiconal e inclui o display none para banir a sidebar de ves na pgn larga que tava matendo a distâcia teimozamente .

é c/ vc disse tem que ir experimentado ai vai ficando mais ousado heheh...

bom acho q fiz um reboliço mas consertando os erros imagino q deve ter fikado tudo certo...


Ae Rô seus comentaristas também ajuadam bastante espero q os meus coments ñ tenham efeito contrário
valeu ai hein é muito divertido este hack (muahahahahah!!!!)

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