aboutsummaryrefslogtreecommitdiff
path: root/themes/hugo-theme-stack/layouts/page
diff options
context:
space:
mode:
Diffstat (limited to 'themes/hugo-theme-stack/layouts/page')
-rw-r--r--themes/hugo-theme-stack/layouts/page/search.html33
-rw-r--r--themes/hugo-theme-stack/layouts/page/search.json26
2 files changed, 59 insertions, 0 deletions
diff --git a/themes/hugo-theme-stack/layouts/page/search.html b/themes/hugo-theme-stack/layouts/page/search.html
new file mode 100644
index 0000000..fbfb74d
--- /dev/null
+++ b/themes/hugo-theme-stack/layouts/page/search.html
@@ -0,0 +1,33 @@
+{{ define "body-class" }}template-search{{ end }}
+{{ define "head" }}
+ {{- with .OutputFormats.Get "json" -}}
+ <link rel="preload" href="{{ .RelPermalink }}" as="fetch" crossorigin="anonymous">
+ {{- end -}}
+{{ end }}
+{{ define "main" }}
+<form action="{{ .RelPermalink }}" class="search-form"{{ with .OutputFormats.Get "json" -}} data-json="{{ .RelPermalink }}"{{- end }}>
+ <p>
+ <label>{{ T "search.title" }}</label>
+ <input name="keyword" placeholder="{{ T `search.placeholder` }}" />
+ </p>
+
+ <button title="{{ T `search.title` }}">
+ {{ partial "helper/icon" "search" }}
+ </button>
+</form>
+
+<div class="search-result">
+ <h3 class="search-result--title section-title"></h3>
+ <div class="search-result--list article-list--compact"></div>
+</div>
+
+<script>
+ window.searchResultTitleTemplate = "{{ T `search.resultTitle` }}"
+</script>
+
+{{- $opts := dict "minify" hugo.IsProduction "JSXFactory" "createElement" -}}
+{{- $searchScript := resources.Get "ts/search.tsx" | js.Build $opts -}}
+<script type="text/javascript" src="{{ $searchScript.RelPermalink }}" defer></script>
+
+{{ partialCached "footer/footer" . }}
+{{ end }} \ No newline at end of file
diff --git a/themes/hugo-theme-stack/layouts/page/search.json b/themes/hugo-theme-stack/layouts/page/search.json
new file mode 100644
index 0000000..5d4e627
--- /dev/null
+++ b/themes/hugo-theme-stack/layouts/page/search.json
@@ -0,0 +1,26 @@
+{{- $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections -}}
+{{- $notHidden := where .Site.RegularPages "Params.hidden" "!=" true -}}
+{{- $filtered := ($pages | intersect $notHidden) -}}
+
+{{- $result := slice -}}
+
+{{- range $filtered -}}
+ {{- $data := dict "title" .Title "date" .Date "permalink" .Permalink "content" (.Plain) -}}
+
+ {{- $image := partialCached "helper/image" (dict "Context" . "Type" "articleList") .RelPermalink "articleList" -}}
+ {{- if $image.exists -}}
+ {{- $imagePermalink := "" -}}
+ {{- if and $image.resource (default true .Page.Site.Params.imageProcessing.cover.enabled) -}}
+ {{- $thumbnail := $image.resource.Fill "120x120" -}}
+ {{- $imagePermalink = (absURL $thumbnail.Permalink) -}}
+ {{- else -}}
+ {{- $imagePermalink = $image.permalink -}}
+ {{- end -}}
+
+ {{- $data = merge $data (dict "image" (absURL $imagePermalink)) -}}
+ {{- end -}}
+
+ {{- $result = $result | append $data -}}
+{{- end -}}
+
+{{ jsonify $result }} \ No newline at end of file