Dennis Lee


Hugo: Jekyll-style date and slug from filename!

BTFOing all of my problems with Hugo!

2020-06-23


OK, so this is now the 3rd post in this saga about automatic Hugo front matter from filenames. This supersedes my 1st and 2nd posts on the subject.

I now have exactly the behavior of Jekyll, where you name files in the format YYYY-MM-DD-title-slug.md and the post date is automatically detected as YYYY-MM-DD and the slug as title-slug. Without explicitly specifying any extra front matter in each individual post! Here’s how:

# config.toml
[frontmatter]
	date = [":filename", ":default", ":fileModTime"]

The important piece is the initial ":filename". This is what enables the behavior described above. If it doesn’t work, it falls back on the subsequent options. ":default" is a shortcut for the default detection behavior.

I’ve also added ":fileModTime" as the last option which is exactly what it sounds like. I have it last because in my experience, while it’s better than nothing, the file system is not quite trustworthy for determining when you actually last modified a file. Sometimes just moving between file systems and storage formats, or having some program open it in write mode without actually making any changes can trigger it.

Source: Configure Hugo | Hugo