The following are key concepts for Hugo site customization. Hugo permits you to supplement or override any theme template or static file, with files in your working directory.
When you use a theme cloned from its git repository, you do not edit the theme’s files directly. Rather, you override them as per the following:
Replace Static Files
For including a different file than what the theme ships with. For example, if you would like to use a more recent version of jQuery than what the theme happens to include, simply place an identically-named file in the same relative location but in your working directory.
For example, if the theme has jQuery 1.6 in:
… you would simply place your file in the same relative path, but in the root of your working folder:
Replace a single template file
Anytime Hugo looks for a matching template, it will first check the working directory before looking in the theme directory. If you would like to modify a template, simply create that template in your local
In the template documentation each different template type explains the rules it uses to determine which template to use. Read and understand these rules carefully.
This is especially helpful when the theme creator used partial templates. These partial templates are perfect for easy injection into the theme with minimal maintenance to ensure future compatibility.
… would be overridden by:
Warning: This only works for templates that Hugo “knows about” (that follow its convention for folder structure and naming). If the theme imports template files in a creatively-named directory, Hugo won’t know to look for the local
Replace an archetype
If the archetype that ships with the theme for a given content type (or all content types) doesn’t fit with how you are using the theme, feel free to copy it to your
/archetypes directory and make modifications as you see fit.
Beware of the default
Default is a very powerful force in Hugo, especially as it pertains to overwriting theme files. If a default is located in the local archetype directory or
/layouts/_default/ directory, it will be used instead of any of the similar files in the theme.
It is usually better to override specific files rather than using the default in your working directory.