Skip to main content

Configuration

Shiloh
Shiloh
5 min read

All parameters go in params section of your site configuration. Shiloh uses a modular configuration structure in config/_default/.

Configuration Files #

FilePurpose
hugo.tomlCore Hugo settings (outputs, pagination, privacy)
params.tomlTheme parameters (all options below)
languages.en.tomlLanguage and site title settings
menus.en.tomlNavigation menus
markup.tomlMarkdown rendering and code highlighting
module.tomlHugo module configuration

Appearance #

ParameterTypeDefaultDescription
colorSchemestring"shiloh"daisyUI theme name
fontstring"code"Font family: "code" (Fira Code) or "prose" (Fraunces + Lora)
defaultAppearancestring"light"Initial theme: "light" or "dark"
autoSwitchAppearancebooleantrueRespect system preference
defaultThemeColorstring"#ffffff"Browser chrome color

Theme Colors #

Shiloh includes two custom daisyUI themes defined in assets/css/main.css:

  • shiloh - Light theme (default)
  • shiloh-dark - Dark theme

Both themes use OKLCH color space for perceptually uniform colors. The color palette includes primary, secondary, accent, neutral, and semantic colors (info, success, warning, error).

Features #

ParameterTypeDefaultDescription
enableSearchbooleantrueEnable Fuse.js search
enableCodeCopybooleantrueShow copy button on code blocks
enableImageLazyLoadingbooleantrueLazy load images
enableImageWebpbooleantrueConvert images to WebP

Swup Page Transitions #

Shiloh uses swup for smooth page transitions and link preloading. Configure in params.swup:

ParameterTypeDefaultDescription
enablebooleantrueEnable swup page transitions
animationstring"fade"Animation type: "fade" or "slide"
nativeTransitionsbooleantrueUse native View Transitions API (Chrome 111+, Safari 18+)
showProgressBarbooleantrueShow progress bar for slow connections
preloadOnHoverbooleantruePreload links on hover
preloadVisibleLinksbooleantruePreload visible links in viewport
[swup]
  enable = true
  animation = "fade"
  nativeTransitions = true
  showProgressBar = true
  preloadOnHover = true
  preloadVisibleLinks = true

Metadata #

ParameterTypeDefaultDescription
descriptionstring""Site meta description
keywordsarray[]Site meta keywords
mainSectionsarray["posts"]Sections shown on homepage
robotsstring""Robots meta tag
fingerprintAlgorithmstring"sha256"Asset integrity hash

Author #

Configure in params.author:

ParameterTypeDescription
namestringAuthor name
imagestringAuthor avatar path
headlinestringShort tagline
biostringLonger biography
linksarraySocial links (see below)

Supported platforms: email, github, x-twitter, linkedin, mastodon, bluesky, instagram, youtube, facebook, threads, discord, reddit, telegram, rss

author:
  links:
    - email: "mailto:you@example.com"
    - github: "https://github.com/username"
    - x-twitter: "https://x.com/username"
    - linkedin: "https://linkedin.com/in/username"
    - mastodon: "https://mastodon.social/@username"
    - bluesky: "https://bsky.app/profile/username"

Configure in params.header:

ParameterTypeDefaultDescription
showTitlebooleantrueShow site title in header
logostring""Logo image path (relative to static/ or assets/ for inline SVG)
showAppearanceSwitcherbooleantrueShow theme toggle in header

The header includes:

  • Site logo or title
  • Main navigation menu
  • Search button (if enableSearch: true)
  • Theme toggle button
  • Mobile hamburger menu (screens < 1024px)

For inline SVG logos that support theme colors, place the SVG in assets/ and reference it. The SVG will be styled with text-base-content for automatic theme support.

Configure in params.footer:

ParameterTypeDefaultDescription
showCopyrightbooleantrueShow copyright notice
showAttributionbooleantrueShow “Powered by Hugo & Shiloh”
showScrollToTopbooleantrueShow scroll-to-top button

Homepage #

Configure in params.homepage:

ParameterTypeDefaultDescription
showRecentbooleantrueShow recent articles
recentLimitinteger5Number of recent articles

Article #

Configure in params.article:

ParameterTypeDefaultDescription
showDatebooleantrueShow publish date
showDateUpdatedbooleanfalseShow last updated date
showAuthorHeaderbooleantrueShow author info in header
showAuthorFooterbooleantrueShow author bio at end of article
showDraftLabelbooleantrueShow draft indicator
showHeadingAnchorsbooleantrueShow # links on headings
showPaginationbooleantrueShow prev/next links
invertPaginationbooleanfalseReverse pagination order
showReadingTimebooleantrueShow reading time
showTableOfContentsbooleantrueShow TOC sidebar
showTaxonomiesbooleanfalseShow tags/categories
displayTaxonomiesarray["tags", "categories"]Which taxonomies to display
showWordCountbooleanfalseShow word count
showCommentsbooleanfalseShow comments section
sharingLinksarray[]Social sharing buttons

Available options: facebook, x-twitter, mastodon, pinterest, reddit, linkedin, email, threads, telegram, line, weibo, xing, bluesky

article:
  sharingLinks:
    - x-twitter
    - linkedin
    - email

List #

Configure in params.list:

ParameterTypeDefaultDescription
showBreadcrumbsbooleanfalseShow breadcrumb navigation
showSummarybooleanfalseShow article summaries
showTableOfContentsbooleanfalseShow TOC on list pages
showTaxonomiesbooleanfalseShow tags on cards
groupByYearbooleantrueGroup articles by year
paginationWidthinteger1Page links to show

Taxonomy #

Configure in params.taxonomy:

ParameterTypeDefaultDescription
showTermCountbooleantrueShow post count per term

Sitemap #

Configure in params.sitemap:

ParameterTypeDefaultDescription
excludedKindsarray["taxonomy", "term"]Page kinds to exclude

Verification #

Configure in params.verification for search engine verification:

verification:
  google: "verification-code"
  bing: "verification-code"
  pinterest: "verification-code"
  yandex: "verification-code"

Configure navigation in menus.en.toml:

[[main]]
  name = "Posts"
  pageRef = "posts"
  weight = 10

[[main]]
  name = "About"
  pageRef = "about"
  weight = 20

[[main]]
  identifier = "search"
  weight = 99

[[footer]]
  name = "Privacy"
  url = "/privacy"
  weight = 10

The search identifier adds a search button to the navbar (requires enableSearch: true).

Markup Settings #

Configure in markup.toml:

[highlight]
  noClasses = false
  lineNos = false
  lineNumbersInTable = true

[goldmark.renderer]
  unsafe = true

[tableOfContents]
  startLevel = 2
  endLevel = 3
  ordered = false

The unsafe = true setting allows raw HTML in markdown content.

Shiloh
Author
Shiloh - A Happy Dog

Built with Tailwind CSS v4 and daisyUI v5