From 00b86b1ff89aaa6f652b6acee1abe1e0ba976bd5 Mon Sep 17 00:00:00 2001 From: Nicholas Perry Date: Fri, 27 May 2022 11:39:47 -0400 Subject: [PATCH] add optinal lunr searching of pages (#3352) --- _config.yml | 2 ++ assets/js/lunr/lunr-store.js | 36 +++++++++++++++++++++++++++++++++- docs/_docs/05-configuration.md | 7 +++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index ba2b50db..1da3e705 100644 --- a/_config.yml +++ b/_config.yml @@ -62,6 +62,8 @@ atom_feed: search : # true, false (default) search_full_content : # true, false (default) search_provider : # lunr (default), algolia, google +lunr: + search_within_pages : # true, false (default) algolia: application_id : # YOUR_APPLICATION_ID index_name : # YOUR_INDEX_NAME diff --git a/assets/js/lunr/lunr-store.js b/assets/js/lunr/lunr-store.js index ff5e2e60..eda552ff 100644 --- a/assets/js/lunr/lunr-store.js +++ b/assets/js/lunr/lunr-store.js @@ -46,4 +46,38 @@ var store = [ "teaser": {{ teaser | relative_url | jsonify }} }{%- unless forloop.last and l -%},{%- endunless -%} {%- endfor -%} - {%- endfor -%}] + {%- endfor -%}{%- if site.lunr.search_within_pages -%}, + {%- for doc in site.pages -%} + {%- if forloop.last -%} + {%- assign l = true -%} + {%- endif -%} + { + "title": {{ doc.title | jsonify }}, + "excerpt": + {%- if site.search_full_content == true -%} + {{ doc.content | newline_to_br | + replace:"
", " " | + replace:"

", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " "| + strip_html | strip_newlines | jsonify }}, + {%- else -%} + {{ doc.content | newline_to_br | + replace:"
", " " | + replace:"

", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " " | + replace:"", " "| + strip_html | strip_newlines | truncatewords: 50 | jsonify }}, + {%- endif -%} + "url": {{ doc.url | absolute_url | jsonify }} + }{%- unless forloop.last and l -%},{%- endunless -%} + {%- endfor -%} +{%- endif -%}] diff --git a/docs/_docs/05-configuration.md b/docs/_docs/05-configuration.md index 5d7a8e27..e56a402b 100644 --- a/docs/_docs/05-configuration.md +++ b/docs/_docs/05-configuration.md @@ -618,6 +618,13 @@ To enable site-wide search add `search: true` to your `_config.yml`. The default search uses [**Lunr**](https://lunrjs.com/) to build a search index of all post and your documents in collections. This method is 100% compatible with sites hosted on GitHub Pages. +To have it index all pages, update `lunr` in `_config.yml` like so: + +```yaml +lunr: + search_within_pages: true +``` + **Note:** Only the first 50 words of a post or page's body content is added to the Lunr search index. Setting `search_full_content` to `true` in your `_config.yml` will override this and could impact page load performance. {: .notice--warning}