diff options
author | John Feminella <jxf+github@jxf.me> | 2022-05-29 21:46:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-29 21:46:30 +0300 |
commit | 3762d3a24cf1b77e6d9bf1223ebdda173e53f498 (patch) | |
tree | 57cc2cbe368fc3d945ae9550d962e313e8cc950b | |
parent | 5e4e500cdfe00babb29eb7aeef18c9d0ec3c5a47 (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.md | 1 | ||||
-rw-r--r-- | layouts/_default/baseof.html | 203 | ||||
-rw-r--r-- | layouts/partials/body/extensions.html | 5 | ||||
-rw-r--r-- | layouts/partials/head.html | 23 | ||||
-rw-r--r-- | layouts/partials/head/alternative-output-formats.html | 3 | ||||
-rw-r--r-- | layouts/partials/head/color-scheme.html | 11 | ||||
-rw-r--r-- | layouts/partials/head/custom-icons.html | 5 | ||||
-rw-r--r-- | layouts/partials/head/custom-styles.html | 21 | ||||
-rw-r--r-- | layouts/partials/head/extensions.html | 4 | ||||
-rw-r--r-- | layouts/partials/head/hugo-generator.html | 1 | ||||
-rw-r--r-- | layouts/partials/head/meta-tags.html | 15 | ||||
-rw-r--r-- | layouts/partials/head/theme-styles.html | 23 | ||||
-rw-r--r-- | layouts/partials/home.html | 36 | ||||
-rw-r--r-- | layouts/partials/home/author.html | 6 | ||||
-rw-r--r-- | layouts/partials/home/avatar.html | 8 | ||||
-rw-r--r-- | layouts/partials/home/social.html | 17 |
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 |