Theme Parameters (Site-wide)
Table of Contents
Tip
The theme works out of the box with sensible defaults. You can ignore these settings at first and add them later when needed.
About the site-wide config
This theme’s site‑wide parameters are grouped under the params.neso
namespace. In your project’s root hugo.toml
, it should look like this:
[params]
[params.neso] # table header
support_theme_author = true # key / value
[params.neso.home]
display_mode = "profile"
# omitted...
You may also split the configuration into multiple files as needed; see the Hugo documentation.
Note
Hugo also accepts YAML or JSON config files. Use any converter if you need to switch formats.
Top-level settings
Table header: [params.neso]
.
Key | Type | Description |
---|---|---|
time_format | String | The format used to display a post’s publish time. See the Hugo docs |
disable_responsive_menu | Boolean | Disable the responsive site menu |
show_breadcrumbs | Boolean | Show the breadcrumb trail at the top of pages (can be turned off per page via Front Matter) |
ext_link_indicator | Boolean | Add an indicator icon to external links |
ext_link_no_opener_referrer | Boolean | Add noopener , noreferrer , etc. to the rel attribute of external link <a> elements |
ext_link_new_window | Boolean | Open external links in a new tab/window |
show_full_content_in_rss | Boolean | Include full content in RSS output (by default, the post Summary from Front Matter is used) |
archive_includes_all_sections | Boolean | Include posts from all sections on the Archives page. (Default false : only include posts from mainSections ) |
disable_scroll_to_top | Boolean | Hide and disable the “Back to top” button |
footer_text | String | Custom text appended after the copyright line in the footer |
hide_copyright | Boolean | Hide the copyright line in the footer |
support_theme_author | Boolean | Show a “Powered by” line in the footer to credit the theme author (thank you 🥹) |
hide_footer | Boolean | Hide the entire footer block (copyright, custom text, and the “Powered by” line) |
force_color_scheme | false String | When set to false , display a color‑scheme switcher UI in the footer. If set to the string "system" (follow the user’s OS), "light" , or "dark" , hide the switcher and force that scheme site‑wide |
display_short_lang_name | Boolean | When multiple languages are enabled, show short codes like “EN” / “ZH” in the top nav instead of full names like “English” / “中文” |
Branding
Table header: [params.neso.branding]
.
Important
There are many possible image slots here, but in practice
og_image
+favicon_ico
+favicon_svg
already provide solid on‑site display and rich link previews. The rest are for pixel‑perfect support in specific environments and can usually be skipped.
Key | Type | Description |
---|---|---|
logo_text | String | Custom text logo in the top navigation bar (This string is only used as the visual logo in the nav; elsewhere the site name comes from the site’s title setting) |
hide_logo_text | Boolean | Hide the text logo in the top navigation bar |
logo_image | String | Logo image URL for the top navigation bar |
logo_image_dark | String | Dark‑mode variant logo image URL for the top nav (used only when the site is in dark color scheme) |
logo_image_width | Integer | Width of the logo image in the top nav (unit is px ; enter a plain integer without the unit) |
logo_image_height | Integer | Height of the logo image in the top nav (unit is px ; enter a plain integer without the unit) |
og_image | String | Default site‑wide og:image URL. Recommended size: 1200×630 px |
favicon_ico | String | Favicon image URL (ICO ). For compatibility and SEO, unless you have special needs, it’s strongly recommended to name the file favicon.ico , place it at the top level of the site’s static/ directory, and leave this setting empty |
favicon_svg | String | Favicon image URL (SVG ). Modern browsers support SVG favicons and they usually render crisper |
apple_touch_icon | String | apple-touch-icon image URL (PNG ) |
pwa_short_title | String | Short name shown when users add the site to the home screen on mobile; keep it brief for better fit |
pwa_theme_color_light | String | Hex theme color (e.g. #bada55 ). Supported browsers may tint UI surfaces to provide a more immersive feel; choose a value that matches your light background |
pwa_theme_color_dark | String | Hex theme color for dark mode. Pick a value that matches your dark background |
pwa_icon_svg | String | PWA icon URL (SVG ) |
pwa_icon_192 | String | PWA icon URL (PNG , 192×192 px) |
pwa_icon_512 | String | PWA icon URL (PNG , 512×512 px) |
pwa_icon_maskable_svg | String | Maskable PWA icon URL (SVG ) |
pwa_icon_maskable_192 | String | Maskable PWA icon URL (PNG , 192×192 px) |
pwa_icon_maskable_512 | String | Maskable PWA icon URL (PNG , 512×512 px) |
Note
For settings prefixed with
pwa_
, the theme generates a manifest.json for you according to the W3C Web App Manifest spec spec. See also web.dev and MDN.For recommended icon variants, usage scenarios, and sizing details, refer to web.dev.
Social links
Table header: [params.neso.social]
.
These settings control the social links shown on the homepage. In TOML, write them as an “Array of Tables”. Example:
[params]
[params.neso]
# other settings omitted...
[params.neso.social]
[[params.neso.social.links]]
name = "Github"
url = "https://github.com/babeneso"
[[params.neso.social.links]]
name = "X"
url = "https://x.com/babeneso"
[params.neso.home]
# other settings omitted...
Key | Type | Description |
---|---|---|
name | String | Platform name; case-insensitive, but spelling must be correct (English) to display the correct icon |
url | String | Your profile URL on that platform |
Homepage
The following explains the homepage settings in detail.
Prepare the Index file
At the top level under
content/
in your Hugo project root, create an_index.md
file (note the leading underscore), and put the following in it:--- # The Front Matter for the homepage only needs the two fields below: title : "Kitty Home" description : "I love cooking and making small treats. My dream is to cuddle cats every day and sleep in!" --- # The main content area is only used when `display_mode` is NOT set to "profile". # If the file is "_index.md", you can write Markdown here to enrich the content; # If the file is "_index.html", you can write HTML here to implement more complex content.
Choose the layout
In the site-wide config file (hugo.toml), set the layout mode under the
[params.neso.home]
table header:[params] [params.neso] # other settings omitted... [params.neso.home] display_mode = "profile" # other settings omitted...
display_mode = "profile"
Show avatar, title, bio text, plus social links and custom link buttons, with a centered layout. This mode is simpler and does not use the Index file's main content.
display_mode = "intro"
Show the title, social links, and the Index file's main content, laid out according to the language's writing direction.
display_mode = "<any other string>"
Highly customizable mode; only the Index file's main content is shown.
In this mode, it is recommended to name the file
_index.html
and write HTML directly inside it. The HTML will be wrapped in a responsive-width container, so you do not need to write<html>
or<body>
tags, just write the content.The theme already wires up a Tailwind CSS pipeline, so you can use utility classes freely.
Detailed settings: "profile"
mode
Table header: [params.neso.home.profile]
.
Key | Type | Description |
---|---|---|
avatar_image | String | Avatar image URL |
avatar_image_alt_text | String | Alt text for the avatar image |
avatar_image_size | Integer | Avatar image size; provide a positive integer; width and height are equal (unit is px ; do not include the unit) |
avatar_image_size_sm | Integer | Avatar image size on small screens (mobile); provide a positive integer; width and height are equal (unit is px ; do not include the unit) |
You can also add extra link buttons shown under the bio. In TOML, write them as an Array of Tables. Example:
[params]
[params.neso]
# other settings omitted...
[params.neso.home.profile]
avatar_image = "img/profile-photo.jpg"
# other settings omitted...
[[params.neso.home.profile.link_btns]]
label = "Download My Resume"
url = "https://example.com/resume"
[[params.neso.home.profile.link_btns]]
label = "Top Repos"
url = "https://github.com/babeneso"
[params.neso.home.list]
# other settings omitted...
Key | Type | Description |
---|---|---|
label | String | Button text |
url | String | Button link URL |
Detailed settings: Recent posts
Table header: [params.neso.home.list]
.
Regardless of the homepage layout you choose, you can additionally append a recent posts list below.
Key | Type | Description |
---|---|---|
featured_entries_limit | Integer | Number of recent posts to show on the homepage; set to 0 to hide |
includes_all_sections | Boolean | Include posts from all sections. (Default false : only include posts from mainSections) |
hide_view_archives_cta | Boolean | Hide the “View Archives” button below the list (the button links to the archives page) |
Post list pages
Table header: [params.neso.list]
.
Post list pages appear throughout the site, such as a Section’s post list or the list of posts under a specific Tag. The following parameters control how these lists are displayed.
Key | Type | Description |
---|---|---|
prominent_first_entry | Boolean | Visually emphasize the first entry in the list (styling only) |
provide_rss_for_each_list | Boolean | Show an RSS button on every list page (in addition to the homepage), pointing to that list’s own feed |
hide_page_nums | Boolean | When pagination is present, hide page numbers |
hide_summary | Boolean | Hide post summaries in lists |
hide_cover_image | Boolean | Hide cover images in lists |
disable_responsive_cover_image | Boolean | By default, list cover images are processed via Hugo Pipes into multiple sizes at build time so the browser can choose an appropriate src for the viewport. Enable this to disable that mechanism (faster builds, potentially lower UX). |
Single post pages
Table header: [params.neso.page]
.
These parameters control the site‑wide defaults for individual post pages. Some settings can be overridden per page via Front Matter.
Tip
For example, if you turn off the Table of Contents here with
show_toc = "false"
, you can still re‑enable the ToC for a specific post via that page’s Front Matter. Notes like this are provided where applicable below.
General settings
Key | Type | Description |
---|---|---|
ext_link_indicator | Boolean | Add an indicator icon to external links inside the article |
ext_link_no_opener_referrer | Boolean | Add noopener , noreferrer to the rel attribute of external link <a> elements in the article |
ext_link_new_window | Boolean | Open external links in a new tab/window |
hide_description_in_single | Boolean | If a post’s Front Matter provides description , the value is used for SEO (e.g., <meta> tags) and also displayed at the top of the article as an introduction. Enable this to hide that introduction block so the value is only used as SEO metadata. |
full_size_cover_image_link | Boolean | If a cover image is set in Front Matter, add a link to the full‑size original |
show_toc | Boolean | Show the in‑content table of contents (can be overridden per page via Front Matter) |
toc_expanded | Boolean | Expand the table of contents by default (can be overridden per page via Front Matter) |
disable_heading_links | Boolean | Do not add anchor <a> elements to Markdown headings (like ## ); similar to GitHub’s Section links; see the Hugo docs |
enable_comments | Boolean | Enable the comments block; see the comments configuration section (can be disabled per page via Front Matter) |
hide_copy_code_button | Boolean | Hide the “Copy” button on code blocks |
Header metadata
The header block shows post metadata such as publish date, author(s), word count, and more. Some settings can be overridden per page via Front Matter.
Key | Type | Description |
---|---|---|
show_reading_time | Boolean | Show the estimated reading time |
show_word_count | Boolean | Show the word count |
show_author | Boolean | Show author(s) (author info can be set in site‑wide params or per post in Front Matter) |
show_canonical_link | Boolean | If the post’s Front Matter provides canonical_url , display a link to it |
canonical_link_text | String | When showing the canonical_url link, prefix it with this default text; e.g., Originally published on (can be overridden in the page’s Front Matter) |
hide_metadata | Boolean | Hide the entire header block (can be overridden per page via Front Matter) |
Footer features
The footer block shows post tags, share buttons, and the previous/next links for further reading. Some settings can be overridden per page via Front Matter.
Key | Type | Description |
---|---|---|
show_content_footer | Boolean | Show the footer block (can be turned off per page via Front Matter) |
show_share | Boolean | Show share buttons (can be turned off per page via Front Matter) |
share_providers | String[] | Choose share targets; if set, only the selected providers are shown, e.g. ["facebook", "line"] ; if not set, all providers are shown by default: ["facebook", "line", "linkedin", "messenger", "reddit", "telegram", "whatsapp", "x"] |
show_prev_next | Boolean | Show “Previous / Next” links for further reading (can be overridden per page via Front Matter) |
Note
“Single post page” here refers to the HTML page rendered by Hugo. Most settings in this section target pages whose page kind is
page
— in typical use this is a blog post. Hugo’s terminology is somewhat abstract, so we call it a single post page here for simplicity.
SEO
Table header: [params.neso.seo]
.
Key | Type | Description |
---|---|---|
block_indexing | Boolean | Set the <meta name="robots"> of all pages to noindex , nofollow (can be overridden per page via Front Matter) |
site_description | String | Site‑wide description/summary |
site_keywords | String[] | Site‑wide list of keywords, e.g. ["cats", "cute"] |
site_author | String String[] | Site owner/author name. For a single person, provide a string (e.g., "Ada Lovelace" ); for multiple people, provide an array of strings (e.g., ["Alice", "Bob", "Carol"] ). |
Detailed settings: Structured data
Table header: [params.neso.seo.schema]
.
The theme automatically generates structured data in JSON‑LD format to improve SEO. The following fields let you provide additional information.
Key | Type | Description |
---|---|---|
publisher_type | String | Publisher type; allowed values are Person or Organization . See Google Search Central (Article structured data) and Schema.org. [docs] [schema] |
same_as | String[] | Other URLs that represent you (e.g., social profile pages). See Google Search Central (Profile page) and Schema.org. [docs] [schema] |
Detailed settings: Search engine verification
Table header: [params.neso.seo.verification]
.
When managing SEO for your site, you may need to verify ownership with search engines.
Most engines offer multiple verification methods. Inserting a <meta>
tag in your HTML is one of them. For example, Google provides code like this:
<meta name="google-site-verification" content="...">
Other engines provide similar mechanisms. In short: after you obtain the verification snippet, find the token inside the content
attribute and paste that token into the fields below. The theme will then insert the verification <meta>
tag for you in the document head.
The following search engines are supported:
Site search
Table header: [params.neso.search]
.
These settings assume you have already set up the search page. If you don’t need on‑site search, you can ignore this section.
Key | Type | Description |
---|---|---|
input_placeholder | String | Placeholder text shown in the search input |
Hugo Pipes asset pipeline
Table header: [params.neso.assets]
.
Some assets used by the theme are processed by Hugo Pipes, such as CSS, JavaScript, and certain images — sometimes for minification/transpilation, sometimes to add a fingerprint for cache busting. The options below control this behavior.
Key | Type | Description |
---|---|---|
output_dir | String | Choose the subdirectory (name) under the publish directory where Hugo Pipes should place its output. Default: "assets" |
disable_fingerprinting | Boolean | Turn off fingerprinting |
Additional notes
Image locations and URLs
The settings above that take an image URL follow these rules:
- Absolute path
- Use the URL as-is; it may be root‑relative within the site or a fully qualified external URL.
- For example:
"/special/stuff.png"
,"https://example.com/image.png"
. - Relative path
- Place images under the project’s
assets/
orstatic/
folder (choose one). In both cases, write the path relative to the top of that folder. - For example, if the file is at
assets/img/example.png
orstatic/img/example.png
, set it as"img/example.png"
. The theme will locate the correct place. Do not start with a leading slash; otherwise it becomes a root‑relative absolute path. - Files placed under
assets/
support fingerprinting.