summaryrefslogtreecommitdiffstats
path: root/layouts/_default/index.json
diff options
context:
space:
mode:
authorSerghei Iakovlev <egrep@protonmail.ch>2024-09-29 18:12:59 +0200
committerSerghei Iakovlev <git@serghei.pl>2024-09-29 18:15:42 +0200
commit9620f0ff31fe3391e6d070c724d5f079c58b3746 (patch)
tree4c0b934273a5519a7d5c93b54fd8ef4485c4a7a3 /layouts/_default/index.json
parent2eb7457e427c9e5ed697564dacef09c3a7f4a071 (diff)
downloadgohugo-theme-ed-9620f0ff31fe3391e6d070c724d5f079c58b3746.tar.gz
Code cleanup and minor fixes
Diffstat (limited to 'layouts/_default/index.json')
-rw-r--r--layouts/_default/index.json59
1 files changed, 59 insertions, 0 deletions
diff --git a/layouts/_default/index.json b/layouts/_default/index.json
new file mode 100644
index 0000000..7f30c80
--- /dev/null
+++ b/layouts/_default/index.json
@@ -0,0 +1,59 @@
+{{- /* Generate the search index. */ -}}
+{{- $pages := slice -}}
+
+{{- $mainSections := site.Params.mainSections | default (slice "posts") -}}
+{{- $pages = where site.RegularPages.ByDate.Reverse "Type" "in" $mainSections -}}
+
+{{- $.Scratch.Add "pagesIndex" slice -}}
+{{- $.Scratch.Add "urlsAdded" slice -}}
+
+{{- range $index, $page := $pages -}}
+ {{- /* 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 -}}
+
+ {{- $publishDate := $page.PublishDate -}}
+ {{- if $publishDate.IsZero -}}
+ {{ $publishDate = now -}}
+ {{- end -}}
+
+ {{- $modifiedDate := $page.Lastmod -}}
+ {{- if $modifiedDate.IsZero -}}
+ {{ $modifiedDate = $publishDate -}}
+ {{- end -}}
+
+ {{- $pageData := (dict
+ "objectID" $page.File.UniqueID
+ "title" $page.Title
+ "href" $page.Permalink
+ "lang" ($page.Params.lang | default $page.Lang)
+ "tags" ($page.Params.tags | default slice)
+ "kind" $page.Kind
+ "type" $page.Type
+ "section" $page.Section
+ "content" (trim $page.Plain "\n ")
+ "publishDate" $publishDate
+ "lastmod" $modifiedDate
+ ) -}}
+
+ {{- $.Scratch.Add "pagesIndex" $pageData -}}
+ {{- $.Scratch.Add "urlsAdded" $page.Permalink -}}
+ {{- end -}}
+
+ {{- end -}}
+
+ {{- end -}}
+
+ {{- end -}}
+
+{{- end -}}
+
+{{- $.Scratch.Get "pagesIndex" | jsonify -}}