Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/luizdepra/hugo-coder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Feminella <jxf+github@jxf.me>2022-05-29 21:46:30 +0300
committerGitHub <noreply@github.com>2022-05-29 21:46:30 +0300
commit3762d3a24cf1b77e6d9bf1223ebdda173e53f498 (patch)
tree57cc2cbe368fc3d945ae9550d962e313e8cc950b
parent5e4e500cdfe00babb29eb7aeef18c9d0ec3c5a47 (diff)
Modularize <head> and baseof templates (#639)
* Add extension points for template customization Today, if you use the hugo-coder template, you can't modify <head> without having to write the entire template from scratch. This makes small point modifications or adjustments impractical and means that downstream consumers will quickly be out of sync with upstream changes. To remedy this, we split up the template into more modular extension points. This commit adds one extension point to <body> for arbitrary scripting and several more to <head> for different existing touchpoints. * Add John Feminella to CONTRIBUTORS.md * Modularize home.html template Co-authored-by: Luiz F. A. de PrĂ¡ <luizdepra@users.noreply.github.com>
-rw-r--r--CONTRIBUTORS.md1
-rw-r--r--layouts/_default/baseof.html203
-rw-r--r--layouts/partials/body/extensions.html5
-rw-r--r--layouts/partials/head.html23
-rw-r--r--layouts/partials/head/alternative-output-formats.html3
-rw-r--r--layouts/partials/head/color-scheme.html11
-rw-r--r--layouts/partials/head/custom-icons.html5
-rw-r--r--layouts/partials/head/custom-styles.html21
-rw-r--r--layouts/partials/head/extensions.html4
-rw-r--r--layouts/partials/head/hugo-generator.html1
-rw-r--r--layouts/partials/head/meta-tags.html15
-rw-r--r--layouts/partials/head/theme-styles.html23
-rw-r--r--layouts/partials/home.html36
-rw-r--r--layouts/partials/home/author.html6
-rw-r--r--layouts/partials/home/avatar.html8
-rw-r--r--layouts/partials/home/social.html17
16 files changed, 205 insertions, 177 deletions
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index badb8df..818a10a 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -108,4 +108,5 @@
- [Xiaoyang Luo](https://github.com/ccviolett/)
- [Michiel Appelman](https://appelman.se)
- [Mark Wood](https://digitalnotions.net)
+- [John Feminella](https://jxf.me)
- [zzsqwq](https://zzsqwq.cn)
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 6b2238d..d29d508 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -1,160 +1,71 @@
<!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}">
-
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="color-scheme" content="light dark">
-
- {{ if .Site.Params.csp }}
- {{ partial "csp.html" . }}
- {{ end }}
-
- {{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
- <meta name="description" content="{{ .Description | default (.Summary | default .Site.Params.description ) }}">
- <meta name="keywords" content="{{ (delimit .Keywords ",") | default .Site.Params.keywords }}">
-
- {{ template "_internal/twitter_cards.html" . }}
- {{ template "_internal/opengraph.html" . }}
-
- <title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
-
- {{ if .Permalink }}
- <link rel="canonical" href="{{ .Permalink }}">
- {{ end }}
-
- <link rel="preload" href="/fonts/forkawesome-webfont.woff2?v=1.2.0" as="font" type="font/woff2" crossorigin>
-
- {{ if .Site.IsServer }}
- {{ $cssOpts := (dict "targetPath" "css/coder.css" "enableSourceMap" true ) }}
- {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
- {{ else }}
- {{ $cssOpts := (dict "targetPath" "css/coder.css" ) }}
- {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts | minify | fingerprint }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
- {{ end }}
-
- {{ if .Site.Params.rtl }}
- {{ if .Site.IsServer }}
- {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" "enableSourceMap" true ) }}
- {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
- {{ else }}
- {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" ) }}
- {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts | minify | fingerprint }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
- {{ end }}
- {{ end }}
-
- {{ if or (eq .Site.Params.colorScheme "auto") (eq .Site.Params.colorScheme "dark") }}
- {{ if .Site.IsServer }}
- {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" "enableSourceMap" true ) }}
- {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
- {{ else }}
- {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" ) }}
- {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts | minify | fingerprint }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
- {{ end }}
- {{ end }}
-
- {{ range .Site.Params.customCSS }}
- {{ if $.Site.IsServer }}
- {{ $styles := resources.Get . }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
- {{ else }}
- {{ $styles := resources.Get . | minify | fingerprint }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
- {{ end }}
- {{ end }}
-
- {{ range .Site.Params.customSCSS }}
- {{/* We don't change the targetPath to because it's transparent to users */}}
- {{ if $.Site.IsServer }}
- {{ $cssOpts := (dict "enableSourceMap" true ) }}
- {{ $styles := resources.Get . | toCSS $cssOpts }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
- {{ else }}
- {{ $styles := resources.Get . | toCSS | minify | fingerprint }}
- <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
- {{ end }}
- {{ end }}
-
- <link rel="icon" type="image/png" href="{{ .Site.Params.favicon_32 | default "/images/favicon-32x32.png" | relURL }}" sizes="32x32">
- <link rel="icon" type="image/png" href="{{ .Site.Params.favicon_16 | default "/images/favicon-16x16.png" | relURL }}" sizes="16x16">
-
- <link rel="apple-touch-icon" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
- <link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
-
- {{ range .AlternativeOutputFormats -}}
- {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
- {{ end -}}
-
- {{ hugo.Generator }}
- </head>
-
- {{ $csClass := "colorscheme-light" }}
- {{ if eq .Site.Params.colorScheme "dark" }}
- {{ $csClass = "colorscheme-dark" }}
- {{ else if eq .Site.Params.colorScheme "auto" }}
- {{ $csClass = "colorscheme-auto" }}
+{{ partial "head.html" . }}
+
+{{ $csClass := "colorscheme-light" }}
+{{ if eq .Site.Params.colorScheme "dark" }}
+{{ $csClass = "colorscheme-dark" }}
+{{ else if eq .Site.Params.colorScheme "auto" }}
+{{ $csClass = "colorscheme-auto" }}
+{{ end }}
+
+<body class="preload-transitions {{ $csClass }}{{ if .Site.Params.rtl }} rtl{{ end }}">
+ {{ partial "float" . }}
+ <main class="wrapper">
+ {{ partial "header.html" . }}
+
+ <div class="content">
+ {{ block "content" . }}{{ end }}
+ </div>
+
+ {{ partial "footer.html" . }}
+ </main>
+
+ {{ if .Site.IsServer }}
+ {{ $script := resources.Get "js/coder.js" }}
+ <script src="{{ $script.RelPermalink }}"></script>
+ {{ else }}
+ {{ $script := resources.Get "js/coder.js" | minify | fingerprint }}
+ <script src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
{{ end }}
- <body class="preload-transitions {{ $csClass }}{{ if .Site.Params.rtl }} rtl{{ end }}">
- {{ partial "float" . }}
- <main class="wrapper">
- {{ partial "header.html" . }}
-
- <div class="content">
- {{ block "content" . }}{{ end }}
- </div>
- {{ partial "footer.html" . }}
- </main>
-
- {{ if .Site.IsServer }}
- {{ $script := resources.Get "js/coder.js" }}
- <script src="{{ $script.RelPermalink }}"></script>
- {{ else }}
- {{ $script := resources.Get "js/coder.js" | minify | fingerprint }}
- <script src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
- {{ end }}
+ {{ range .Site.Params.customJS }}
+ {{ if $.Site.IsServer }}
+ {{ $script := resources.Get . }}
+ <script src="{{ $script.RelPermalink }}"></script>
+ {{ else }}
+ {{ $script := resources.Get . | minify | fingerprint }}
+ <script src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
+ {{ end }}
+ {{ end }}
- {{ range .Site.Params.customJS }}
- {{ if $.Site.IsServer }}
- {{ $script := resources.Get . }}
- <script src="{{ $script.RelPermalink }}"></script>
- {{ else }}
- {{ $script := resources.Get . | minify | fingerprint }}
- <script src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
- {{ end }}
- {{ end }}
+ {{ template "_internal/google_analytics.html" . }}
- {{ template "_internal/google_analytics.html" . }}
+ {{ if and .Site.Params.fathomAnalytics .Site.Params.fathomAnalytics.siteID }}
+ {{- partial "analytics/fathom" . -}}
+ {{ end }}
- {{ if and .Site.Params.fathomAnalytics .Site.Params.fathomAnalytics.siteID }}
- {{- partial "analytics/fathom" . -}}
- {{ end }}
+ {{ if and .Site.Params.plausibleAnalytics .Site.Params.plausibleAnalytics.domain }}
+ {{- partial "analytics/plausible" . -}}
+ {{ end }}
- {{ if and .Site.Params.plausibleAnalytics .Site.Params.plausibleAnalytics.domain }}
- {{- partial "analytics/plausible" . -}}
- {{ end }}
+ {{ if and .Site.Params.goatCounter .Site.Params.goatCounter.code }}
+ {{- partial "analytics/goatcounter" . -}}
+ {{ end }}
- {{ if and .Site.Params.goatCounter .Site.Params.goatCounter.code }}
- {{- partial "analytics/goatcounter" . -}}
- {{ end }}
+ {{ if and .Site.Params.cloudflare .Site.Params.cloudflare.token }}
+ {{- partial "analytics/cloudflare" . -}}
+ {{ end }}
- {{ if and .Site.Params.cloudflare .Site.Params.cloudflare.token }}
- {{- partial "analytics/cloudflare" . -}}
- {{ end }}
+ {{ if and .Site.Params.matomo .Site.Params.matomo.serverURL }}
+ {{- partial "analytics/matomo" . -}}
+ {{ end }}
- {{ if and .Site.Params.matomo .Site.Params.matomo.serverURL }}
- {{- partial "analytics/matomo" . -}}
- {{ end }}
+ {{ if and .Site.Params.googleTagManager .Site.Params.googleTagManager.id }}
+ {{- partial "analytics/googletagmanager" . -}}
+ {{ end }}
- {{ if and .Site.Params.googleTagManager .Site.Params.googleTagManager.id }}
- {{- partial "analytics/googletagmanager" . -}}
- {{ end }}
- </body>
+ {{- partial "body/extensions" . -}}
+</body>
</html>
diff --git a/layouts/partials/body/extensions.html b/layouts/partials/body/extensions.html
new file mode 100644
index 0000000..6dddea7
--- /dev/null
+++ b/layouts/partials/body/extensions.html
@@ -0,0 +1,5 @@
+{{/*
+ This extension point occurs just before the end of each page's <body> tag.
+
+ You can add further theme extensions or customizations here if needed.
+*/}}
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
new file mode 100644
index 0000000..739c723
--- /dev/null
+++ b/layouts/partials/head.html
@@ -0,0 +1,23 @@
+<head>
+ {{ partial "head/meta-tags.html" . }}
+
+ <title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
+
+ {{ if .Permalink }}
+ <link rel="canonical" href="{{ .Permalink }}">
+ {{ end }}
+
+ {{ partialCached "head/theme-styles.html" . }}
+
+ {{ partialCached "head/color-scheme.html" . }}
+
+ {{ partialCached "head/custom-styles.html" . }}
+
+ {{ partialCached "head/custom-icons.html" . }}
+
+ {{ partialCached "head/alternative-output-formats.html" . }}
+
+ {{ partialCached "head/hugo-generator.html" . }}
+
+ {{ partial "head/extensions.html" . }}
+</head>
diff --git a/layouts/partials/head/alternative-output-formats.html b/layouts/partials/head/alternative-output-formats.html
new file mode 100644
index 0000000..8b1829a
--- /dev/null
+++ b/layouts/partials/head/alternative-output-formats.html
@@ -0,0 +1,3 @@
+{{ range .AlternativeOutputFormats -}}
+ {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
+{{ end -}}
diff --git a/layouts/partials/head/color-scheme.html b/layouts/partials/head/color-scheme.html
new file mode 100644
index 0000000..7a55e8e
--- /dev/null
+++ b/layouts/partials/head/color-scheme.html
@@ -0,0 +1,11 @@
+{{ if or (eq .Site.Params.colorScheme "auto") (eq .Site.Params.colorScheme "dark") }}
+ {{ if .Site.IsServer }}
+ {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" "enableSourceMap" true ) }}
+ {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
+ {{ else }}
+ {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" ) }}
+ {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
+ {{ end }}
+{{ end }}
diff --git a/layouts/partials/head/custom-icons.html b/layouts/partials/head/custom-icons.html
new file mode 100644
index 0000000..f7bfae5
--- /dev/null
+++ b/layouts/partials/head/custom-icons.html
@@ -0,0 +1,5 @@
+<link rel="icon" type="image/png" href="{{ .Site.Params.favicon_32 | default "/images/favicon-32x32.png" | relURL }}" sizes="32x32">
+<link rel="icon" type="image/png" href="{{ .Site.Params.favicon_16 | default "/images/favicon-16x16.png" | relURL }}" sizes="16x16">
+
+<link rel="apple-touch-icon" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
+<link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
diff --git a/layouts/partials/head/custom-styles.html b/layouts/partials/head/custom-styles.html
new file mode 100644
index 0000000..6496963
--- /dev/null
+++ b/layouts/partials/head/custom-styles.html
@@ -0,0 +1,21 @@
+ {{ range .Site.Params.customCSS }}
+ {{ if $.Site.IsServer }}
+ {{ $styles := resources.Get . }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
+ {{ else }}
+ {{ $styles := resources.Get . | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
+ {{ end }}
+{{ end }}
+
+{{ range .Site.Params.customSCSS }}
+ {{/* We don't change the targetPath to because it's transparent to users */}}
+ {{ if $.Site.IsServer }}
+ {{ $cssOpts := (dict "enableSourceMap" true ) }}
+ {{ $styles := resources.Get . | toCSS $cssOpts }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
+ {{ else }}
+ {{ $styles := resources.Get . | toCSS | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
+ {{ end }}
+{{ end }}
diff --git a/layouts/partials/head/extensions.html b/layouts/partials/head/extensions.html
new file mode 100644
index 0000000..a9eb885
--- /dev/null
+++ b/layouts/partials/head/extensions.html
@@ -0,0 +1,4 @@
+{{/*
+ You can add further theme extensions or customizations here if they should
+ appear in <head>.
+*/}}
diff --git a/layouts/partials/head/hugo-generator.html b/layouts/partials/head/hugo-generator.html
new file mode 100644
index 0000000..cee2034
--- /dev/null
+++ b/layouts/partials/head/hugo-generator.html
@@ -0,0 +1 @@
+{{ hugo.Generator }}
diff --git a/layouts/partials/head/meta-tags.html b/layouts/partials/head/meta-tags.html
new file mode 100644
index 0000000..aa929db
--- /dev/null
+++ b/layouts/partials/head/meta-tags.html
@@ -0,0 +1,15 @@
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="color-scheme" content="light dark">
+
+{{ if .Site.Params.csp }}
+{{ partial "csp.html" . }}
+{{ end }}
+
+{{ with .Site.Params.author }}
+<meta name="author" content="{{ . }}">{{ end }}
+<meta name="description" content="{{ .Description | default (.Summary | default .Site.Params.description ) }}">
+<meta name="keywords" content="{{ (delimit .Keywords " ,") | default .Site.Params.keywords }}">
+
+{{ template "_internal/twitter_cards.html" . }}
+{{ template "_internal/opengraph.html" . }}
diff --git a/layouts/partials/head/theme-styles.html b/layouts/partials/head/theme-styles.html
new file mode 100644
index 0000000..720b7b2
--- /dev/null
+++ b/layouts/partials/head/theme-styles.html
@@ -0,0 +1,23 @@
+<link rel="preload" href="/fonts/forkawesome-webfont.woff2?v=1.2.0" as="font" type="font/woff2" crossorigin>
+
+{{ if .Site.IsServer }}
+ {{ $cssOpts := (dict "targetPath" "css/coder.css" "enableSourceMap" true ) }}
+ {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
+{{ else }}
+ {{ $cssOpts := (dict "targetPath" "css/coder.css" ) }}
+ {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
+{{ end }}
+
+{{ if .Site.Params.rtl }}
+ {{ if .Site.IsServer }}
+ {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" "enableSourceMap" true ) }}
+ {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
+ {{ else }}
+ {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" ) }}
+ {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
+ {{ end }}
+{{ end }}
diff --git a/layouts/partials/home.html b/layouts/partials/home.html
index ff640dd..85ca04e 100644
--- a/layouts/partials/home.html
+++ b/layouts/partials/home.html
@@ -1,35 +1,9 @@
<section class="container centered">
<div class="about">
- {{ if and (isset .Site.Params "avatarurl") (not (isset .Site.Params "gravatar")) }}
- {{ with .Site.Params.avatarURL }}
- <div class="avatar"><img src="{{ . | relURL }}" alt="avatar"></div>
- {{ end }}
- {{ end }}
- {{ with .Site.Params.gravatar }}
- <div class="avatar"><img src="https://www.gravatar.com/avatar/{{md5 .}}?s=240&d=mp" alt="gravatar"></div>
- {{ end }}
- <h1>{{ .Site.Params.author }}</h1>
- {{ if reflect.IsSlice .Site.Params.info }}
- <h2>{{ range .Site.Params.info }}{{.}}<br>{{ end}}</h2>
- {{ else }}
- <h2>{{ .Site.Params.info }}</h2>
- {{ end }}
- {{ with .Site.Params.social }}
- <ul>
- {{ range sort . "weight" }}
- {{ if .icon }}
- <li>
- <a href="{{ .url | safeURL }}" aria-label="{{ .name }}" {{ if .rel }}rel="{{ .rel }}"{{ end }} {{ if .target }}target="{{ .target }}"{{ end }} {{ if .type }}type="{{ .type }}"{{ end }}>
- <i class="{{ .icon }}" aria-hidden="true"></i>
- </a>
- </li>
- {{ else }}
- <li>
- <a href="{{ .url | safeURL }}" aria-label="{{ .name }}" {{ if .rel }}rel="{{ .rel }}"{{ end }} {{ if .target }}target="{{ .target }}"{{ end }}>{{ .name }}</a>
- </li>
- {{ end }}
- {{ end }}
- </ul>
- {{ end }}
+ {{ partialCached "home/avatar.html" . }}
+
+ {{ partialCached "home/author.html" . }}
+
+ {{ partialCached "home/social.html" . }}
</div>
</section>
diff --git a/layouts/partials/home/author.html b/layouts/partials/home/author.html
new file mode 100644
index 0000000..699447b
--- /dev/null
+++ b/layouts/partials/home/author.html
@@ -0,0 +1,6 @@
+<h1>{{ .Site.Params.author }}</h1>
+{{ if reflect.IsSlice .Site.Params.info }}
+<h2>{{ range .Site.Params.info }}{{.}}<br>{{ end}}</h2>
+{{ else }}
+<h2>{{ .Site.Params.info }}</h2>
+{{ end }}
diff --git a/layouts/partials/home/avatar.html b/layouts/partials/home/avatar.html
new file mode 100644
index 0000000..4928915
--- /dev/null
+++ b/layouts/partials/home/avatar.html
@@ -0,0 +1,8 @@
+{{ if and (isset .Site.Params "avatarurl") (not (isset .Site.Params "gravatar")) }}
+ {{ with .Site.Params.avatarURL }}
+ <div class="avatar"><img src="{{ . | relURL }}" alt="avatar"></div>
+ {{ end }}
+{{ end }}
+{{ with .Site.Params.gravatar }}
+ <div class="avatar"><img src="https://www.gravatar.com/avatar/{{md5 .}}?s=240&d=mp" alt="gravatar"></div>
+{{ end }}
diff --git a/layouts/partials/home/social.html b/layouts/partials/home/social.html
new file mode 100644
index 0000000..8d726c8
--- /dev/null
+++ b/layouts/partials/home/social.html
@@ -0,0 +1,17 @@
+{{ with .Site.Params.social }}
+<ul>
+ {{ range sort . "weight" }}
+ {{ if .icon }}
+ <li>
+ <a href="{{ .url | safeURL }}" aria-label="{{ .name }}" {{ if .rel }}rel="{{ .rel }}"{{ end }} {{ if .target }}target="{{ .target }}"{{ end }} {{ if .type }}type="{{ .type }}"{{ end }}>
+ <i class="{{ .icon }}" aria-hidden="true"></i>
+ </a>
+ </li>
+ {{ else }}
+ <li>
+ <a href="{{ .url | safeURL }}" aria-label="{{ .name }}" {{ if .rel }}rel="{{ .rel }}"{{ end }} {{ if .target }}target="{{ .target }}"{{ end }}>{{ .name }}</a>
+ </li>
+ {{ end }}
+ {{ end }}
+</ul>
+{{ end }} \ No newline at end of file