summaryrefslogtreecommitdiffstats
path: root/layouts
diff options
context:
space:
mode:
Diffstat (limited to 'layouts')
-rw-r--r--layouts/index.json47
-rw-r--r--layouts/partials/data.html9
-rw-r--r--layouts/shortcodes/form-search.html56
3 files changed, 75 insertions, 37 deletions
diff --git a/layouts/index.json b/layouts/index.json
index 05d731f..538cfcc 100644
--- a/layouts/index.json
+++ b/layouts/index.json
@@ -1,3 +1,4 @@
+{{- /* Generate the search index. */ -}}
{{- $pages := slice -}}
{{- $mainSections := site.Params.mainSections | default (slice "posts") }}
@@ -7,19 +8,43 @@
{{- $.Scratch.Add "urlsAdded" slice -}}
{{- range $index, $page := $pages -}}
- {{- if gt (len $page.Content) 0 -}}
- {{- if not (in ($.Scratch.Get "urlsAdded") $page.Permalink) -}}
- {{- $pageData := (dict
- "title" $page.Title
- "href" $page.Permalink
- "tags" (delimit ($page.Params.tags | default slice) " ; ")
- "categories" (delimit ($page.Params.categories | default slice) " ; ")
- "content" $page.Plain
- ) -}}
- {{- $.Scratch.Add "pagesIndex" $pageData -}}
- {{- $.Scratch.Add "urlsAdded" $page.Permalink -}}
+ {{- /* Do not index drafts or private pages. */ -}}
+ {{- if and (not .Draft) (not .Params.private) | and (ne .Params.searchable false) -}}
+
+ {{- /* Do not index pages w/o content. */ -}}
+ {{- if gt (len $page.Content) 0 -}}
+
+ {{- /* Add page to index. */ -}}
+ {{- if not (in ($.Scratch.Get "urlsAdded") $page.Permalink) -}}
+
+ {{/* Exclude virtual pages which aren't backed by a file */}}
+ {{ if .File }}
+ {{- $pageData := (dict
+ "objectID" $page.File.UniqueID
+ "date" $page.Date.UTC.Unix
+ "publishDate" $page.PublishDate
+ "lastmod" $page.Lastmod.UTC.Unix
+ "expiryDate" $page.ExpiryDate.UTC.Unix
+ "lang" $page.Lang
+ "title" $page.Title
+ "href" $page.Permalink
+ "kind" $page.Kind
+ "type" $page.Type
+ "section" $page.Section
+ "tags" (delimit ($page.Params.tags | default slice) " ; ")
+ "categories" (delimit ($page.Params.categories | default slice) " ; ")
+ "content" $page.Plain
+ ) -}}
+ {{- $.Scratch.Add "pagesIndex" $pageData -}}
+ {{- $.Scratch.Add "urlsAdded" $page.Permalink -}}
+ {{- end -}}
+
+ {{- end -}}
+
{{- end -}}
+
{{- end -}}
+
{{- end -}}
{{- $.Scratch.Get "pagesIndex" | jsonify -}}
diff --git a/layouts/partials/data.html b/layouts/partials/data.html
index fa12238..afacc83 100644
--- a/layouts/partials/data.html
+++ b/layouts/partials/data.html
@@ -2,13 +2,6 @@
{
"analytics_code": {{ site.GoogleAnalytics | default "" }},
"page_title": {{- partial "title.html" . -}},
- "language": {{ site.LanguageCode | default site.Language.Lang }},
- "strings": {
- "searchEnterTerm": {{ i18n "search_enter_term" }},
- "searchNoResults": {{ i18n "search_no_results" }}
- },
- "site": {
- "baseUrl": {{ site.BaseURL }}
- }
+ "language": {{ site.LanguageCode | default site.Language.Lang }}
}
</script>
diff --git a/layouts/shortcodes/form-search.html b/layouts/shortcodes/form-search.html
index f328f38..873c73a 100644
--- a/layouts/shortcodes/form-search.html
+++ b/layouts/shortcodes/form-search.html
@@ -22,32 +22,52 @@
<div id="search-results-body" class="post-list"></div>
</section>
-{{- $vendors := slice (resources.Get "js/vendor/lunr.js") -}}
-{{- $vendors = $vendors | append (resources.Get "js/vendor/lunr.multi.js" ) -}}
-{{- $vendors = $vendors | append (resources.Get "js/vendor/lunr.stemmer.support.js" ) -}}
+{{- $isProduction := (or (eq (getenv "HUGO_ENV") "production") (eq site.Params.env "production")) -}}
+
+{{- /* Add lunr.js. */ -}}
+{{- $lunrSearch := slice (resources.Get "js/vendor/lunr.js") -}}
+
+{{- /* Add lunr multilanguage support. */ -}}
+{{- $lunrSearch = $lunrSearch | append (resources.Get "js/vendor/lunr.multi.js" ) -}}
+{{- $lunrSearch = $lunrSearch | append (resources.Get "js/vendor/lunr.stemmer.support.js" ) -}}
{{- $lunrLangs := slice "de" "es" "fr" "it" "pt" "ru" -}}
{{- range $lunrLangs -}}
- {{ $vendors = $vendors | append (resources.Get (printf "js/vendor/lunr.%s.js" .) ) }}
+ {{ $lunrSearch = $lunrSearch | append (resources.Get (printf "js/vendor/lunr.%s.js" .) ) -}}
{{- end -}}
-{{- $vendors = $vendors | resources.Concat "js/lunr-bundle.js" -}}
-{{- if or (eq (getenv "HUGO_ENV") "production") (eq site.Params.env "production") }}
- {{- $vendors = $vendors | minify -}}
+{{- /* Build lunr. */ -}}
+{{- $lunrSearch = $lunrSearch | resources.Concat "js/lunr-bundle.js" -}}
+
+{{- if $isProduction -}}
+ {{- $lunrSearch = $lunrSearch | minify -}}
{{- end -}}
-{{- if not site.Params.assets.disable_fingerprinting -}}
- {{- $vendors = $vendors | fingerprint -}}
- <script src="{{ $vendors.RelPermalink }}" integrity="{{ $vendors.Data.Integrity }}"></script>
+
+{{- if or (site.Params.assets.disable_fingerprinting) (not $isProduction) }}
+ <script src="{{ $lunrSearch.RelPermalink }}"></script>
{{- else -}}
- <script src="{{ $vendors.RelPermalink }}"></script>
+ {{- $lunrSearch = $lunrSearch | fingerprint }}
+ <script src="{{ $lunrSearch.RelPermalink }}" integrity="{{ $lunrSearch.Data.Integrity }}"></script>
{{- end -}}
-{{- $search := resources.Get "js/search.js" -}}
-{{- if or (eq (getenv "HUGO_ENV") "production") (eq site.Params.env "production") }}
- {{- $search = $search | minify -}}
+{{- /* Configure search engine. */ -}}
+{{- $maxSummaryLength := site.Params.search.maxSummaryLength | default 100 -}}
+{{- $searchConfig := dict "indexURI" ("/index.json" | relLangURL) "maxSummaryLength" $maxSummaryLength -}}
+{{- $searchI18n := dict "enterTerm" (i18n "search_enter_term") "noResults" (i18n "search_no_results") -}}
+{{- $searchParams := dict "searchConfig" $searchConfig "i18n" $searchI18n -}}
+
+{{- $siteSearch := slice -}}
+{{- $siteSearch = $siteSearch | append (resources.Get "js/search.js") -}}
+{{- $siteSearch = $siteSearch | resources.Concat "js/search-bundle.js" -}}
+
+{{- if $isProduction -}}
+ {{- $siteSearch = $siteSearch | js.Build (dict "format" "iife" "params" $searchParams) | minify -}}
+{{ else }}
+ {{- $siteSearch = $siteSearch | js.Build (dict "format" "iife" "sourceMap" "inline" "params" $searchParams) -}}
{{- end -}}
-{{- if not site.Params.assets.disable_fingerprinting -}}
- {{- $search = $search | fingerprint -}}
- <script src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
+
+{{- if or (site.Params.assets.disable_fingerprinting) (not $isProduction) }}
+ <script src="{{ $siteSearch.RelPermalink }}"></script>
{{- else -}}
- <script src="{{ $search.RelPermalink }}"></script>
+ {{- $siteSearch = $siteSearch | fingerprint }}
+ <script src="{{ $siteSearch.RelPermalink }}" integrity="{{ $siteSearch.Data.Integrity }}"></script>
{{- end -}}