In a previous post I talked about my experience setting up a Hugo site. Since then I have been exploring various additional Hugo-related threads including this one - configuring the main page (a.k.a. Hugo homepage).
The First Problem: Where are My Posts?
When I looked at the main page of the Beautiful Hugo Example Site, I saw the title, the subtitle, optional front page content, and a list of posts down the middle of the page.
When I looked at my initial home page, I saw a title, subtitle, and nothing else.
I didn’t have the optional front page content because I didn’t implement the
/content/_index.md
file - but I believed it would show up if I followed those
instructions (and I just tried it to be sure).
The part that really confused me was the lack of a list of posts.
Digging Into Templates and Layouts
In order to understand what was going on on the main page, I started looking into how Hugo handles templates and in particular, the lookup order.
As I was reading through that, I noticed there was something called a Homepage Template. That sounded promising so I dug further into what my theme was providing and why that didn’t seem to be showing the list of pages.
What I found was that I needed to create layouts/index.html
and copy
from what I was seeing in the theme’s version of the page in
themes/beautifulhugo/layouts/index.html
. Doing this not only got it
working - still not sure why it wasn’t picking it up from the theme before
- but also allowed me to customize what I wanted to show and how.
Which led me to the next problem…
The Second Problem: Adding Social Links
Since the way I had decided to use the content specific to the home page
was to introduce myself, I thought that I really should be displaying the
social links from the footer here as well. I spent quite a while trying a
few different things including partial templates
but I kept getting stuck with how to get access to the .Site
variable
near where I was including the _index.md
content.
My Social Solution
After some help from a dumpdot.html example
I eventually figured out that I needed to get outside the scope of the
{{ with .Content }}
block.
So instead of using:
|
|
I used:
|
|
And inside of layouts/partials/social-links.html
I made a copy of
the part of the themes/beautifulhugo/layouts/partials/footer.html
that I wanted to include.
I had an urge to refactor the footer.html
to reference this new
partial too, but held off since I wanted to both write this up - to
help me remember how I addressed this problem - and leave time to
look into some other challenges with customizing Hugo (like
better summaries.
A Remaining Link Color Hack
For some reason, I was still struggling to get the link colors for the
social icons to be the same as in the footer rather than like other links.
After trying a number of other ways (e.g. wrapping the content of
partials/social-links.html
with a <footer>
element) I punted and set
style="color: #404040;"
on the <a>
elements in that partial.
It worked, but feels very much a hack. I don’t want to inline CSS but I haven’t gone far enough down the rabbit hole of customizing Hugo themes to learn how to add another CSS declaration in a way that feels in sync with the coding practices of Hugo.