Sorting pages by last modified date in Hugo
This blog is managed as a git repository and I use Hugo as the framework for managing it. I am using the Hugo classic theme which I have tweaked slightly and store it along with the blog source.
I wanted to modify the sorting of the blog post titles on the index page so that the most recently modified page was displayed first. The support was added to Hugo 4 years back, so the following template worked for me:
<ul>
{{ range (where .Data.Pages.ByLastmod.Reverse "Section" "!=" "") }}
<li>
<span class="date">{{ .Date.Format "2006/01/02" }}</span>
<a href="{{ .URL }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
The key bit here is: .Data.Pages.ByLastmod.Reverse
. My blog’s config file has the following key information which
is needed for the above to work:
enableGitInfo = true
lastmod = ["lastmod", ":fileModTime", ":default"]