Hugo
Table of Contents
Go To References #
-
Hugo Quick Start | Hugo Docs - Covers basic hugo setup and installation (e.g.
brew install hugo
), as well as the various ways of adding and setting up a theme -
Hugo Page on Gitlab - Click
Use template
in thePages/Hugo
section, then name the project, and clickCreate project
-
Hugo, the scope, the context, and the dot | Regis Philibert - Great explanation about how contexts get passed around in Hugo with the
{{ . }}
, how contexts switch when in a Page or Partial or when usingwith
andrange
, and how to access the top level context from a partial with$
-
.Scratch | Hugo Docs - Explains the basics of using the temporary ‘scratchpad’ for storing and manipulating data. Most useful section was the creation of a local scratch with
{{ $scratch := newScratch }}
-
Hugo .Scratch explained | Regis Philibert - Detailed explanation of
.Scratch
with a great use case for conditionally setting CSS classes across Partials and Pages. Also has a useful comparison at the end, between using.Scratch
vs. passing a(dict "key1" $arg1 "page" . )
when calling a Partial. -
Hugo Conditionals | Mike Dane - Explains basic conditional syntax, e.g.
{{ if or (not .src) (eq .src "") }} {{ else if condition }} {{ else }} {{ end }}
Note: The above
if
condition checks if.src
isfalse
,nil
, or an empty string -
Image Processing | Hugo Docs - Basic overview of built-in image processing capabilities (e.g. moving to
srcset
fromsrc
and moving from using thestatic
folder to using theassets
folder (or within the Page resources for storing images). Important distinctions:- For page resource, must use
dot
withcapital R
andGetMatch
:
{{ $image := .Resources.GetMatch "sunset.jpg" }}
- For global resources, must use
lowercase r
with nodot
, followed byGet
:
{{ $image := resources.Get "images/sunset.jpg" }}
- Render using
.RelPermalink
:
{{ $image := .Resources.GetMatch "sunset.jpg" }} {{ with $image }} <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}"> {{ end }}
Can also do more than simple Resizing:
- Simple resize:
{{ $image.Resize "96x" }}
- Webp format with quality of 50:
{{ $image.Resize "600x webp q50" }}
- Add background color:
{{ $image.Resize "600x jpg #333" }}
- For page resource, must use
-
How to add image processing to your Hugo website and improve performance - Contains a great shortcode which I’ve tweaked and modified into a partial to add
srcset
to all large images and for the preview images on the list pages. Will add a tutorial on how exactly I did that in the future. -
Head to Head: Shortcodes vs Partials in Hugo | J.P. Droege - Explains differences between Shortcodes and Partials, namely where you call them:
- Partials are called from templates and other partials
{{ partial “headshot” (dict “ctx” $ “id” .) }}
- Shortcodes are called directly from markdown files
{{< headshot kim_keecheon >}}
{{< headshot kim_keecheon >}} Inner text {{< /headshot >}}
- Partials are called from templates and other partials
-
Hugo tips: How to create author pages - Great example from Netlify about setting up multiple author support within Hugo, along with an example site.
-
Multiple Authors Support in Hugo Website | Coding N Concepts - Another example of a multi-author site, this time utilizing the
data
folder. -
Last modified date | Mert Bakir - How to keep the
lastmod
date auto-updated -
Permalinks | Hugo Docs - How to display URL paths that are different from content folder structure
Tools #
- FrontMatter VSCode extension - Awesome extension which turns VSCode into an actual Content Management System (CMS)
- FrontMatter Documentation - Overview of FrontMatter a Headless CMS running in VSCode / VSCodium. It allows you to not only create new content, but also manage data and images, as well as launch and preview the live site right in the IDE. Works with Hugo, Gatsby, Jekyll, and more.
Awesome Themes #
- Congo theme | James Panther - This is the theme that this site is built on. James provides awesome support and is always making updates and is very responsive when I’ve had questions or needed help. Highly recommend!