Skip to content

Latest commit

 

History

History
89 lines (64 loc) · 3.1 KB

README.md

File metadata and controls

89 lines (64 loc) · 3.1 KB

Hugo live search using Fuse.js and Mark.js

This is not a standalone theme. This is a Hugo theme component. To use it:

  1. Clone this repo to your-site/themes/hugo-search-fuse-js directory. Note that the theme name has to remain hugo-search-fuse-js.

  2. Add "hugo-search-fuse-js" as the leftmost element of the theme list variable in your site's or theme's config.toml. Example:

    theme = ["hugo-search-fuse-js", "my-theme"]
    
  3. Create content/search.md with layout parameter set to "search", and output parameter set to ["html", "json"]. The content or body of this search.md is not used by the search.html template which is part of this theme component.

    Here is an example search.md:

    +++
    title = "Search"
    layout = "search"
    outputs = ["html", "json"]
    [sitemap]
      priority = 0.1
    +++

Requirements

For this theme component to work as-is:

  1. Your main theme must be structured using base template and blocks, and
  2. The base template needs to define main and footer blocks (shown in that previous link).

If the main theme does not meet these requirements, you will need to edit the search.html partial to make search work. You can find it in layouts/_default/search.html in this component.

What if the main theme does not have baseof.html?

You have two options:

  1. Edit the search.html to make it fit your theme.
  2. Upgrade the theme to use the new "base template and blocks" approach.

What if the main theme has baseof.html, but doesn't have the main and/or footer blocks?

It's very easy to add those blocks without breaking your existing theme.

To add the main block, add this to your baseof.html at the appropriate place:

{{ block "main" . }}{{ end }}

And similarly add the below if the footer block is missing:

{{ block "footer" . }}{{ end }}

For an example, see the baseof.html snippet in Hugo docs.

Credits