Intro
-
We’ll be using
yml/yamlformat for all examples down below, I recommend usingymlovertomlas it is easier to read. -
You can find any YML to TOML converters if necessary.
Override theme template
By Hugo’s Lookup Order, you can override any part of a theme that you want. The following is a quick example.
Let’s say you wish the list was different. All you have to do is copy the list template:
|
|
And paste it under your own layouts folder:
|
|
Then you’re free to make any changes you want to the list.
When Hugo builds your site, your copy of list.html will be used instead of the theme’s list.html.
Enable Social-Metadata and SEO
These include OpenGraph, Twitter Cards and Schema.
|
|
or set HUGO_ENV as “production” in system env-vars
Failed to find a valid digest in the ‘integrity’ attribute for resource … ?
Read about How Subresource Integrity helps: Subresource_Integrity
Why was the asset not loading ? : How_browsers_handle_Subresource_Integrity
Solution:
Set the following in config.yml
|
|
Linked Issues:
- https://stackoverflow.com/questions/65056585/hugo-theme-not-loading
- https://stackoverflow.com/questions/65040931/hugo-failed-to-find-a-valid-digest-in-the-integrity-attribute-for-resource
- https://blog.gerardbeckerleg.com/posts/hugo-failed-to-find-a-valid-digest-in-the-integrity-attribute-for-resource/
Bundling Custom css with theme’s assets
- For adding custom css to be bundled inside one minimized css
Create folder in yout project directory as
|
|
All css files inside assets/css/extended will be bundled !
Note: blank.css is just the placeholder so that it doesn’t break the theme when no files are present under assets/css/extended
Linked Issues:
Custom Head / Footer
Custom css/js can be added by way mentioned below.
|
|
Create a html page in directory structure as shown above.
Contents of extend_head.html will be added to head of page.
and contents of extend_footer.html will be added to bottom of page.
Add menu to site
You can add menu entries which will appear in the header of every page.
To do so, add a menu section to your site’s config.yml:
|
|
name controls what will be displayed for the menu entry.
url sets the URL that the entry points to.
weight is used to control the positioning of entries.
For more information on menus, see the Hugo wiki page.
Pin a Post
Post can be pinned/ displayed top on the list by adding a weight=<num> var to page-variables
example:
|
|
|
|
Adding Custom Favicon(s)
We support the following paths under /static directory
and can be added accordingly.
favicon.icofavicon-16x16.pngfavicon-32x32.pngapple-touch-icon.pngsafari-pinned-tab.svg
-
Favicon(s) can be generated by Favicon.io
and can be simply put in
/staticfolder. -
Other way is to add favicon(s) NOT located in
/staticfolder.In site config add the following:
1 2 3 4 5 6 7params: assets: favicon: "<link / absolute url>" favicon16x16: "<link / absolute url>" favicon32x32: "<link / absolute url>" apple_touch_icon: "<link / absolute url>" safari_pinned_tab: "<link / absolute url>"absolute urlmeans direct links to external resource: ex. https://web.site/someimage.png
example:
1 2 3 4 5 6 7params: assets: favicon: "/favicon.ico" favicon16x16: "/favicon-16x16.png" favicon32x32: "/favicon-32x32.png" apple_touch_icon: "/apple-touch-icon.png" safari_pinned_tab: "/safari-pinned-tab.svg"
Centering image in markdown
Add #center after image to center align an image
|
|
When using figure shortcode
use align=center to center image with captions
ex.
|
|
Using Hugo’s Syntax highlighter “chroma”
-
Disable Highlight.js in site
config.yml1 2 3params: assets: disableHLJS: true -
Set hugo’s markdown styling in site
config.yml1 2 3 4 5 6 7 8markup: highlight: # anchorLineNos: true codeFences: true guessSyntax: true lineNos: true # noClasses: false style: monokai -
If you want
lineNos: true, the background won’t be proper. This will only work withnoClasses: falseorpygmentsUseClasses: true. Read Generate Syntax Highlighter CSSAdd the following to
assets/css/extended/custom.css1 2 3.chroma { background-color: unset; }More Info : Configure Markup - Highlight
Search not working ?
If you are using a CDN to server assets from a different domain, search would break
Why? Take a look at fastsearch.js#L35.
We fetch the index.json (where the search function looks for the keywords typed) one level up of the website search.min.js is hosted on.
We have used this insted of assigning baseURL so as to work with multilingual websites ex. example.com/fr/ and websites being placed under a subdirectory ex. example.com/blog/.
To fix for single language websites hosting assets from CDN, this you may override fastsearch.js#L35 and placing appropriate URL as in
|
|