Secção Histórico
   2 min leitura

O Zdoc tem uma secção “Updates” (que eu traduzi para “Histórico”), mas os artigos dentro dela eram criados à mão. Como sou preguiçoso (a pessoa mais preguiçosa do mundo) e não gosto de fazer coisas à mão quando podem ser automatizadas, tentei arranjar maneira de produzir um site index com menos esforço.
No Wordpress e outras plataformas dinâmicas é facílimo, mas num site estático como o Hugo, as soluções envolviam plugins, NPM, Node.js, tudo coisas com as quais não queria interagir (agora).
Mas felizmente, há uma possibilidade de fingir essa funcionalidade usando uma função interna do Hugo, que são as Taxonomies. Felizmente, não as uso para mais nada, mas não sei se fazer isto impede outros usos para as Taxonomies.
Acrescenta-se o seguinte ao config.toml

1
2
3
4
5
6
7
[taxonomies]
year = "year"
month = "month"

[permalinks]
year = "updates/:slug/"
month = "updates/:slug/"

Fazer isto acrescenta automaticamente páginas site/updates/ano e páginas site/updates/ano/mês, preenchidas com o :slug de todas as páginas que tenham esses valores nas variáveis year: e month: que agora podemos começar a pôr no Frontmatter de cada página, desta forma:

1
2
3
4
5
6
7
---
title: "Secção Histórico"
description: "Mais um hack..."
[...]
year: ["2021"]
month: ["2021/09"]
---

Para gerar estes campos automaticamente quando se cria um artigo ou post novos com hugo new, acrescentou-se o seguinte ao Frontmatter dos archetypes (archetypes/blog/post.md e archetypes/default.md):

year: ["{{ now.Format "2006" }}"]
month: ["{{ now.Format "2006/01" }}"]

E para que estas páginas não tenham o formato do blog (que é a configuração por defeito para Taxonomies), fez-se a seguinte mudança no layouts/_default/taxonomy.html

1
2
3
4
5
6
7
<div class="top">
  <header class="header__wrapper bgcolor__header">
    {{ with .Site.GetPage "section" "blog" }}
      {{ if eq .Params.blogHeaderType "img" }}
        <!-- {{ partial "header/blog-header.html" . }} -->
         {{ partial "header/custom-header.html" . }}
      {{ else }}


Depois bastou fazer links estáticos no content/<lang>/updates/_index.md para as páginas automaticamente geradas:

1
2
3
Actualizações
[2021](/pt/updates/2021)
- [Agosto](/pt/updates/2021/08)

Sim, ainda tenho de criar estes links à mão, mas as páginas atras dos links são criadas sem que eu tenha de colocar cada post lá um a um.
Progresso!
Fontes:
https://discourse.gohugo.io/t/how-to-generate-chronological-blog-archives-in-hugo/13491/5
https://discourse.gohugo.io/t/strugling-with-chronological-blog-archive/31963/2
https://gohugo.io/templates/lists/

Neste artigo