Recentemente precisei personalizar a página inicial do meu blog Hugo que usa o tema PaperMod. O objetivo era criar uma homepage informativa que explicasse a organização do site e apresentasse os principais tópicos, sem a listagem automática de posts que o tema exibe por padrão.
Neste post, vou compartilhar os desafios encontrados e as soluções implementadas para ter controle total sobre o conteúdo da página inicial.
O Problema
O tema PaperMod oferece duas opções principais para a homepage:
- ProfileMode: Exibe um perfil com botões e informações básicas
- HomeInfoParams: Adiciona um bloco de informações antes da listagem de posts
Ambas as opções têm limitações:
- O
profileModesubstitui completamente o conteúdo do arquivo_index.md - O
homeInfoParamsadiciona conteúdo extra, mas ainda lista os posts - Quando ambos estão desabilitados, o tema automaticamente lista todos os posts
A Solução: Template Personalizado
Para ter controle total sobre a homepage, implementei uma solução em três etapas:
1. Desabilitar o ProfileMode
Primeiro, desabilitei o profileMode no arquivo hugo.toml:
[params.profileMode]
enabled = false # era true
title = "Brain Dump"
subtitle = "Anotações, ideias, tópicos de estudos do dia a dia (e alguns devaneios)"
2. Remover HomeInfoParams
Em seguida, removi (ou comentei) a seção homeInfoParams para evitar conteúdo duplicado:
# [params.homeInfoParams]
# Title = "Bem-vindo ao meu blog"
# Content = "Aqui compartilho ideias, tutoriais e anotações direto do Obsidian."
3. Criar Template Personalizado
O principal aqui foi criar um template personalizado em layouts/index.html para sobrescrever o comportamento padrão do tema:
{{- define "main" }}
{{- if .Content }}
<div class="post-content">
{{- if not (.Param "disableAnchoredHeadings") }}
{{- partial "anchored_headings.html" .Content -}}
{{- else }}{{ .Content }}{{ end }}
</div>
{{- end }}
{{- end }}{{- /* end main */ -}}
O template basicamente:
- Renderiza apenas o conteúdo do arquivo
_index.md - Mantém o processamento de markdown e âncoras nos títulos
- Remove completamente a listagem automática de posts
(obrigado tio Gepeto pela ajuda nessas horas)
Criando o Conteúdo da Homepage
Com o template personalizado funcionando, tentei criar um arquivo content/_index.md que possa levantar o interesse:
---
title: "Brain (Hugo + Obsidian)"
description: "Blog pessoal e minhas anotações direto do Obsidian"
---
Este é meu espaço digital onde compartilho **conhecimento**, **experiências** e **reflexões** sobre tecnologia, carreira e desenvolvimento pessoal.
## Como o site está organizado
O conteúdo está estruturado de forma a facilitar sua navegação e descoberta de informações relevantes:
### 📝 **Blog**
Artigos estruturados e tutoriais completos sobre diversos temas técnicos...
### 🧠 **Brain**
Minhas anotações pessoais, importadas diretamente do Obsidian...
### 🏷️ **Tags**
Sistema de etiquetas para encontrar conteúdo específico rapidamente (assim espero)...
## Principais tópicos abordados (ou que eu gostaria de conseguir abordar)
### 🌩️ **Cloud Computing**
### 🗄️ **Banco de Dados**
### 🎓 **Certificações**
### 💼 **Carreira**
### 📊 **Business Intelligence**
### ⚙️ **DevOps**
## Sobre mim
Sou **Logan Merazzi**, profissional de tecnologia...
Problemas de Formatação Markdown
Durante a implementação, encontrei alguns problemas de formatação que precisaram ser corrigidos:
Linter Markdown
O linter identificou vários problemas:
- Títulos duplicados (H1 no frontmatter e no conteúdo)
- Espaços em branco desnecessários
- Falta de linhas em branco ao redor de títulos e listas
Correções Aplicadas
(notem o espaçamento entre as linhas…)
# Antes (problemático)
### 📝 **Blog**
Artigos estruturados...
- Item 1
- Item 2
# Depois (correto)
### 📝 **Blog**
Artigos estruturados...
- Item 1
- Item 2
Resultado Final
Por mim, acho que consegui terminar com uma homepage bem personalizada, onde:
- Exibe apenas o conteúdo desejado do arquivo
_index.md - Explica a organização do site de forma clara e estruturada
- Apresenta os principais tópicos com emojis e descrições
- Inclui seção “Sobre mim” com links sociais
- Remove a listagem automática de posts da homepage
- Mantém a formatação markdown adequada
Lições Aprendidas
Templates personalizados: Criar um
layouts/index.htmlpersonalizado oferece controle total sobre a homepageEntender a hierarquia de templates: Hugo segue uma ordem específica para escolher templates, e arquivos locais sempre sobrescrevem os do tema
Formatação markdown importa: Problemas de formatação podem afetar a renderização, especialmente se o linters estiver “rigoroso” demais
Documentar é essencial: Manter registro das alterações facilita manutenção futura e compartilhamento de conhecimento. Ainda mais agora, com a chegada forte da IA. Ter tudo bem documentado ajuda demais ela a entender todo o contexto de forma bem mais fácil, rápida e mais barata (aqui, tenho as minhas dúvidas)
Conclusão
Para personalizar a homepage do Hugo com tema PaperMod, é preciso entender muito como o tema funciona internamente e tem que estar muito disposto a criar novos templates personalizados quando necessário.
Se você está enfrentando limitações similares com temas Hugo, considere esta abordagem de templates personalizados - ela pode ser a chave para ter o controle total que você precisa.
💡 Life saving tip: Sempre teste suas alterações localmente antes de fazer deploy, e mantenha backups das configurações originais para facilitar rollbacks se necessário. Ou então, considere uma forma de deploy que te permita validar as alterações antes de aplicar