Combine layouts para conseguir o melhor de ambos os mundos
Agora que você adicionou um layout para cada postagem do blog, é hora de fazer suas postagens parecerem com o resto das páginas no seu website!
Se prepare para...
- Aninhar seu layout de postagem do blog dentro do seu layout de página principal
Aninhe seus dois layouts
Seção intitulada Aninhe seus dois layoutsVocê já tem um LayoutBase.astro
para definir o layout geral da suas páginas.
LayoutPostMarkdown.astro
te dá templates adicionais para propriedades comuns de postagens do blog como um titulo
e data
, mas suas postagens do blog não se parecem com as outras páginas no seu site. Você pode corresponder a aparência das suas postagens do blog com o resto do seu site ao aninhar layouts.
-
Em
src/layouts/LayoutPostMarkdown.astro
, importeLayoutBase.astro
e o utilize para envolver todo o conteúdo do template. Não se esqueça de passar a proptituloPagina
:src/layouts/LayoutPostMarkdown.astro ---import LayoutBase from './LayoutBase.astro';const { frontmatter } = Astro.props;---<LayoutBase tituloPagina={frontmatter.titulo}><h1>{frontmatter.titulo}</h1><p>{frontmatter.dataPub.slice(0,10)}</p><p><em>{frontmatter.descricao}</em></p><p>Escrito por: {frontmatter.autor}</p><img src={frontmatter.imagem.url} width="300" alt={frontmatter.imagem.alt} /><slot /></LayoutBase> -
Verifique a pré-visualização do seu navegador
http://localhost:4321/posts/post-1
. Agora você deve ver conteúdo renderizado pelo:- Seu layout de página principal, incluindo seus estilos, links de navegação e rodapé de redes sociais.
- Seu layout de postagem do blog, incluindo propriedades frontmatter como a descrição, data, título e imagem
- Seu conteúdo Markdown individual da postagem do blog, incluindo apenas o texto escrito na postagem
-
Note que o título da sua página agora é mostrado duas vezes, uma por cada um dos layouts.
Remova a linha que mostra o título da sua página de
LayoutPostMarkdown.astro
:src/layouts/LayoutPostMarkdown.astro <LayoutBase tituloPagina={frontmatter.titulo}><h1>{frontmatter.titulo}</h1><p>{frontmatter.dataPub.slice(0,10)}</p><p><em>{frontmatter.descricao}</em></p><p>Escrito por: {frontmatter.autor}</p><img src={frontmatter.image.url} width="300" alt={frontmatter.image.alt} /><slot /></LayoutBase> -
Verifique sua pré-visualização do navegador novamente em
http://localhost:4321/posts/post-1
e cheque que essa linha não é mais mostrada e seu título é mostrado apenas uma vez. Faça quaisquer outros ajustes necessários para garantir que você não tenha nenhum conteúdo duplicado.
Certifique-se de que:
-
Cada postagem do blog mostra o mesmo template de página, e nenhum conteúdo está faltando. (Se está faltando conteúdo em uma das suas postagens do blog, verifique suas propriedades do frontmatter.)
-
Nenhum conteúdo é duplicado em uma página. (Se algo está sendo renderizado duas vezes, então certifique-se de removê-lo de
LayoutPostMarkdown.astro
.)
Se você quiser customizar seu template de página, você pode.
Teste seu conhecimento
Seção intitulada Teste seu conhecimento-
Isso te permite aninhar um layout dentro de outro e se aproveitar trabalhando com peças modulares.
-
Múltiplos layouts são particularmente úteis para projetos que contém páginas Markdown, como um…
-
Qual destes fornece templates para todas as suas páginas?