summaryrefslogtreecommitdiffstats
path: root/layouts/index.json
blob: 538cfcc40a69466b6ca01ef859e37ee8767e30bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{{- /* 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 }}
          {{- $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 -}}