Nem todos os temas têm a capacidade de gerir vários autores dentro de um blogue. E sou provavelmente um mau observador, porque não vi, na apresentação dos temas disponíveis, se um tema gere nativamente vários autores ou não.
É bastante desagradável ter encontrado O tema perfeito, e que falte uma simples funcionalidade. Por isso, decidi utilizar a gestão taxonómica nativa para registar vários autores num blogue. E, por enquanto, funciona bastante bem.
Para escrever este artigo, fui inspirado pelo seguinte tutorial: Como criar páginas de autor.
Estou a ter o cuidado de o completar apenas nos pontos em que tive de experimentar muito.
Usos das taxonomias
Existem duas taxonomias padrão em Hugo:
- Etiquetas;
- Categorias.
Para utilizar as taxonomias padrão de Hugo, ou aquelas nativas do tema escolhido, é muito simples, basta adicionar o seguinte ao seu arquétipo:
---
tags:
- faire son site
- hugo-tips
categories:
- hugo
---
O princípio é simples: assim que adicionar uma categoria ou uma etiqueta, e o tema a gerir bem, encontrará uma http://[votresite]/tags/ e outra /catégories/ que listam etiquetas e categorias, e uma página por item listando os artigos que mencionam o item nos seus arquétipos.
Vejamos agora como criar uma nova taxonomia que abriria a possibilidade de adicionar um ou mais autores a um artigo.
Criar uma taxonomia
Cada taxonomia tem dois modelos:
- list.html, que corresponde ao modelo da página que irá descrever um dos artigos (um autor, para nós, e todos os artigos a ele ligados)
- terms.html, que corresponde à página que listará todos os itens de uma taxonomia (todos os autores, portanto)
No nosso caso, vamos criar uma taxonomia de autor. Serão pós-autores, e não autores de livros, como no exemplo da ligação anterior.
Trabalharemos em duas árvores:
- a pasta content, logicamente na raiz do site hugo ;
- a pasta layout do tema utilizado pelo sítio.
Os dados relativos aos itens da taxonomia
Na pasta content, criaremos uma pasta para cada autor, na qual será colocado um ficheiro _index.md,
content
└── authors/
├── j0rdan-m/
│ └── _index.md
└── author-2/
└── _index.md
Cada _index.md descreve um autor, e é composto da seguinte forma:
---
name: j0rdan-m
photo: 'https://j0rdan-m.gitlab.io/blog/pearlbonnet.png'
twitter: '@j0rdan_m'
---
j0rdan é um autor do blog
Metadados
Os dados relativos aos autores estão prontos, precisamos agora de estabelecer os meta-dados.
Para tal, teremos de criar uma pasta outide no layout do nosso tema (e não a pasta de taxonomias, o que pode ser surpreendente).
my_theme/
└── layout/
└── authors/
└── list.html
└── terms.html
O ficheiro list.html não lista os autores, mas os artigos que mencionam os autores (ou qualquer outra escolha de taxonomia).
Assim, aqui estão os conteúdos básicos do ficheiro list.hml:
<h1>{{ .Params.name }}</h1>
<img src="{{ .Params.photo }}" alt=""/>
<h2>Bio</h2>
{{ .Content }}
{{ with .Params.twitter }}
<p>
<a href="https://twitter.com/{{ substr . 1 }}">
Follow {{ $.Params.name }} on Twitter
</a>
</p>
{{ end }}
<h2>Articles</h2>
<ul>
{{ range .Data.Pages }}
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
O ficheiro terms.html é o modelo da página que listará todos os autores, e proporá uma ligação para cada um deles:
<h1>Authors</h1>
<ul>
{{ range .Data.Pages }}
<li><a href="{{ .Permalink }}">{{ .Params.name }}</a></li>
{{ end }}
</ul>
Atenção, será necessário integrar a montante e a jusante dos códigos propostos o conteúdo do tema, tomando o exemplo na página predefinida (provavelmente em temas/meu_tema/layouts/_default/single.html)
O tema utilizado por este blog ofereceu um comentário agradável para isolar a informação do tema do conteúdo (graças ao <section></section>. Outro tema que uso menciona <main></main>)
Uma vez que estamos nesta página single.html, poderemos acrescentar uma menção do autor:
{{- range .Params.authors }}
{{- with $.Site.GetPage "taxonomyTerm" (printf "authors/%s" (urlize .)) }}
<figure>
<img src="{{ .Params.photo }}" alt=""/>
<figcaption>
<a href="{{ .Permalink }}">{{ .Params.name }}</a>
</figcaption>
</figure>
{{ end }}
{{ end }}
Ce esta menção deve ser acrescentada no local da página onde se pretende que apareça, obviamente.
Finalmente, agora que tudo está pronto, podemos declarar a taxonomia no nosso ficheiro config.toml, acrescentando a seguinte nota:
[taxonomies]
author = "authors"
tag = "tags"
category = "categories"
Para os meus próprios fins, adicionei manualmente uma entrada no menu, sabendo que o endereço para visualizar a sua taxonomia será :http://[mon site]/authors/
É assim que, graças às taxonomias, este blog se tornou um blog multi-autor.