Construa uma página de Índice de Tags
Agora que você tem páginas individuais para cada tag, é hora de fazer links para elas.
Se prepare para...
- Adicionar uma nova página utilizando o padrão de roteamento
/pages/pasta/index.astro
- Mostrar uma lista de todas as suas tags únicas, fazendo links para cada página de tag
- Atualizar seu site com links de navegação para essa nova página Tags
Utilize o padrão de roteamento /pages/pasta/index.astro
Seção intitulada Utilize o padrão de roteamento /pages/pasta/index.astroPara adicionar uma página Índice de Tags ao seu website, você poderia criar um novo arquivo em src/pages/tags.astro
.
Porém, já que você já tem o diretório /tags/
, você pode se aproveitar de outro padrão de roteamento no Astro, e manter todos os seus arquivos relacionados à tags juntos.
Tente você mesmo - Faça uma página de Índice de Tags
Seção intitulada Tente você mesmo - Faça uma página de Índice de Tags-
Crie um novo arquivo
index.astro
no diretóriosrc/pages/tags/
. -
Navegue para
http://localhost:4321/tags
e verifique que seu site agora contém uma página nessa URL. Ela estará vazia, mas vai existir. -
Crie uma página mínima em
src/pages/tags/index.astro
que utiliza seu layout. Você já fez isso anteriormente!Expanda para ver as etapas
-
Crie um novo componente de página em
src/pages/tags/
.Mostre o nome do arquivo
-
Importe e utilize seu
<BaseLayout>
.Mostre o código
-
Defina um título da página, e passe-o para o seu layout como um atributo do componente.
Mostre o código
-
-
Verifique sua pré-visualização do navegador novamente e você deve ter uma página formatada, pronta para adicionar conteúdo nela!
Crie um array de tags
Seção intitulada Crie um array de tagsVocê havia anteriormente mostrado itens em uma lista de um array utilizando map()
. Como se pareceria definir um array de todas as suas tags, e então mostrá-las em uma lista nessa página?
Veja o código
Você poderia fazer isso, mas então você teria que voltar para esse arquivo e atualizar seu array toda vez que você utiliza uma nova tag em uma futura postagem no blog.
Felizmente, você já sabe uma forma de conseguir os dados de todos os seus arquivos Markdown em uma linha de código, e então retornar uma lista de todas as suas tags.
-
Em
src/pages/tags/index.astro
, adicione a linha de código para o script frontmatter que irá dar à sua página acesso aos dados de todo arquivo.md
de postagem do blog.Veja o código
-
Depois, adicione a seguinte linha de JavaScript ao seu componente da página. Essa é a mesma linha que você utilizou em
src/pages/tags/[tag].astro
para retornar uma lista de tags únicas.
Crie sua lista de tags
Seção intitulada Crie sua lista de tagsAo invés de criar items em uma lista desordenada dessa vez, crie um <p>
para cada item, dentro de <div>
. O padrão deve parecer familiar!
-
Adicione o seguinte código para seu template do componente:
Na sua pré-visualização do navegador, verifique que você pode ver suas tags listadas.
-
Para fazer cada tag ter um link para sua própria página, adicione o seguinte link
<a>
para cada nome de tag:
Adicione estilos a sua lista de tags
Seção intitulada Adicione estilos a sua lista de tags-
Adicione as seguintes classes CSS para estilizar tanto sua
<div>
quanto cada<p>
que será gerado. Nota: Astro utiliza a sintaxe do HTML para adicionar nomes de classes! -
Defina essas novas classes CSS adicionando a seguinte tag
<style>
para essa página: -
Cheque a pré-visualização do seu navegador em
http://localhost:4321/tags
para verificar que você tem uns novos estilos e que cada uma das tags na página tem um link funcional para sua própria página de tag individual.
Check In de Código
Seção intitulada Check In de CódigoAqui está como sua nova página deve se parecer:
Adicione essa página à sua navegação
Seção intitulada Adicione essa página à sua navegaçãoNeste momento, você pode navegar para http://localhost:4321/tags
e ver essa página. A partir dessa página, você pode clicar em links para suas páginas individuais de tags.
Porém, você ainda precisa fazer com que essas páginas possam ser encontradas a partir de outras páginas no seu website.
-
Em seu componente
Navigation.astro
, inclua um link para essa nova página Índice de Tags.Me mostre o código
Desafio: Inclua tags em seu layout de postagem do blog
Seção intitulada Desafio: Inclua tags em seu layout de postagem do blogAgora você escreveu todo o código que você precisa para também mostrar uma lista de tags em cada postagem do blog, e fazer links para suas páginas de tag. Você tem trabalho existente que pode reutilizar!
Siga as etapas abaixo, e então cheque seu trabalho o comparando com a amostra de código final.
- Copie
<div class="tags">...</div>
e<style>...</style>
desrc/pages/tags/index.astro
e o reutilize dentro deMarkdownPostLayout.astro
:
Antes desse código funcionar, você precisa fazer uma pequena modificação no código que você colou em MarkdownPostLayout.astro
. Você consegue descobrir qual é a modificação?
Me dê uma dica
Como estão as outras props (e.x. title, author, etc.) escritas no template do seu layout? Como seu layout recebe props de uma postagem individual do blog?
Me dê outra dica!
Para que se utilize props (valores passados) de uma postagem do blog .md
em seu layout, como tags, você precisa prefixar o valor com uma certa palavra.
Me mostre o código!
Check In de Código: MarkdownPostLayout
Seção intitulada Check In de Código: MarkdownPostLayoutPara verificar seu trabalho, ou se você só quer o código completo e correto para copiar em MarkdownPostLayout.astro
, aqui está como seu componente Astro deve se parecer como:
Teste seu conhecimento
Seção intitulada Teste seu conhecimentoCorresponda cada caminho de arquivo com um segundo caminho de arquivo que irá criar uma página na mesma rota.
-
src/pages/categorias.astro
-
src/pages/posts.astro
-
src/pages/products/sapatos/index.astro