diff options
Diffstat (limited to 'layouts/partials')
-rw-r--r-- | layouts/partials/favicon.html | 2 | ||||
-rw-r--r-- | layouts/partials/footer.html | 4 | ||||
-rw-r--r-- | layouts/partials/header.html | 6 | ||||
-rw-r--r-- | layouts/partials/nav.html | 25 | ||||
-rw-r--r-- | layouts/partials/seo_tags.html | 20 | ||||
-rw-r--r-- | layouts/partials/social_card.html | 136 | ||||
-rw-r--r-- | layouts/partials/style.html | 173 |
7 files changed, 177 insertions, 189 deletions
diff --git a/layouts/partials/favicon.html b/layouts/partials/favicon.html index ccf1a5d..d391a86 100644 --- a/layouts/partials/favicon.html +++ b/layouts/partials/favicon.html @@ -1,2 +1,2 @@ {{ with .Site.Params.favicon }} -<link rel="shortcut icon" href="{{ . | absURL }}" />{{ end }} +<link rel="shortcut icon" href="{{ absURL . }}" />{{ end }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 8eca955..9290715 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -1 +1,3 @@ -{{ if ne .Site.Params.hideMadeWithLine true }}Made with <a href="https://github.com/janraasch/hugo-bearblog/">Hugo ʕ•ᴥ•ʔ Bear</a>{{ end }} +<small> + {{ .Site.Copyright }} | {{ markdownify .Site.Params.madeWith }} +</small>
\ No newline at end of file diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 9bb5112..5a66907 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -1,4 +1,4 @@ -<a href="{{ "" | relURL }}" class="title"> - <h2>{{ .Site.Title }}</h2> -</a> +<a class="skip-link" href="#main-content">{{ i18n "skip-link" }}</a> + +<a href="{{ relURL .Site.Home.Permalink }}" class="title"><h1>{{ .Site.Title }}</h1></a> <nav>{{- partial "nav.html" . -}}</nav> diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html index f4fabed..5f40267 100644 --- a/layouts/partials/nav.html +++ b/layouts/partials/nav.html @@ -1,7 +1,22 @@ -<a href="{{ "" | relURL }}">Home</a> -{{ range .Site.Menus.main }} -<a href="{{ .URL }}">{{ .Name }}</a> +{{ range .Site.Menus.main.ByWeight }} + <a href="{{ .URL }}">{{ .Name }}</a> {{ end }} -{{ with .Site.GetPage "/blog" }} -<a href="{{ "blog" | relURL }}">Blog</a> +<a href='{{ absURL "index.xml" }}'>RSS</a> + +<!-- Convert this page's translations into a dict --> +{{ $translations := dict }} +{{ range .Translations }} + {{ $translations = merge $translations (dict .Language.Lang .) }} +{{ end }} + +<!-- Create a link to every translation --> +{{ range where .Site.Languages "Lang" "!=" .Page.Lang }} + {{ with (index $translations .Lang) }} + <a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a> + {{ else }} + <!-- The complicated setup was necessary to make a grayed out link --> + {{ if not .Params.hideUntranslated }} + <a class="disabled" role="link" aria-disabled="true">{{ .LanguageName }}</a> + {{ end }} + {{ end }} {{ end }} diff --git a/layouts/partials/seo_tags.html b/layouts/partials/seo_tags.html index 0b01f8b..81e498f 100644 --- a/layouts/partials/seo_tags.html +++ b/layouts/partials/seo_tags.html @@ -3,11 +3,19 @@ <meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" /> <meta name="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" /> -<!-- Open Graph / Facebook --> -{{ template "_internal/opengraph.html" . }} +<!-- Only generate social card if: --> +<!-- - generateSocialCard = true --> +<!-- - there aren't images set in frontmatter --> +<!-- - page is of .Kind "page" --> +{{ if and (and (default false .Site.Params.generateSocialCard) (not (isset .Params "images"))) (eq .Kind "page") }} + {{ partial "social_card.html" . }} +{{ else }} + <!-- Open Graph / Facebook --> + {{ template "_internal/opengraph.html" . }} -<!-- Twitter --> -{{ template "_internal/twitter_cards.html" . }} + <!-- Twitter --> + {{ template "_internal/twitter_cards.html" . }} -<!-- Microdata --> -{{ template "_internal/schema.html" . }} + <!-- Microdata --> + {{ template "_internal/schema.html" . }} +{{ end }} diff --git a/layouts/partials/social_card.html b/layouts/partials/social_card.html new file mode 100644 index 0000000..1568475 --- /dev/null +++ b/layouts/partials/social_card.html @@ -0,0 +1,136 @@ +<!-- Dynamic social card generation --> +{{ $font := resources.GetRemote "https://github.com/google/fonts/raw/main/ofl/firamono/FiraMono-Bold.ttf" }} +{{ $fg := resources.Get "images/social_card_fg.png"}} +{{ $bg := resources.Get "images/social_card_bg.png"}} + +{{ if gt (len .Title) 45 }} + {{ $fg = $fg.Filter (images.Text .Title (dict + "font" $font + "color" "#fafafa" + "size" 95 + "linespacing" 16 + "x" 0 + "y" 0 + )) }} +{{ else }} + {{ $fg = $fg.Filter (images.Text .Title (dict + "font" $font + "color" "#fafafa" + "size" 130 + "linespacing" 20 + "x" 0 + "y" 0 + )) }} +{{ end }} + +{{ $date := .Date.Format (default "2006-01-02" .Site.Params.dateFormat) }} +{{ $author := (default $.Site.Params.author.name ($.Param "author") ) }} +{{ $byline := (printf "%s | %s" $author $date) }} + +{{ $fg = $fg.Filter (images.Text $byline (dict + "font" $font + "color" "#c9d1d9" + "size" 60 + "linespacing" 30 + "x" 0 + "y" 425 +)) }} + +{{ $card := $bg.Filter (images.Overlay $fg 112 140 ) }} +{{ $card := $card.Resize "900x webp q100" }} + +<!-- Open Graph / Facebook --> +<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html --> +<meta property="og:title" content="{{ .Title }}" /> +<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" /> +<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" /> +<meta property="og:url" content="{{ .Permalink }}" /> + +<meta property="og:image" content="{{ $card.Permalink | absURL }}"/> + +{{- if .IsPage }} +{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} +<meta property="article:section" content="{{ .Section }}" /> +{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }} +{{ with .Lastmod }}<meta property="article:modified_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }} +{{- end -}} + +{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }} +{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }} +{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }} +{{- with .Params.videos }}{{- range . }} +<meta property="og:video" content="{{ . | absURL }}" /> +{{ end }}{{ end }} + +{{- /* If it is part of a series, link to related articles */}} +{{- $permalink := .Permalink }} +{{- $siteSeries := .Site.Taxonomies.series }} +{{- if $siteSeries }} +{{ with .Params.series }}{{- range $name := . }} + {{- $series := index $siteSeries ($name | urlize) }} + {{- range $page := first 6 $series.Pages }} + {{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }} + {{- end }} +{{ end }}{{ end }} +{{- end }} + +{{- /* Deprecate site.Social.facebook_admin in favor of site.Params.social.facebook_admin */}} +{{- $facebookAdmin := "" }} +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- $facebookAdmin = .facebook_admin }} + {{- end }} +{{- else }} + {{- with site.Social.facebook_admin }} + {{- $facebookAdmin = . }} + {{- warnf "The social key in site configuration is deprecated. Use params.social.facebook_admin instead." }} + {{- end }} +{{- end }} + +{{- /* Facebook Page Admin ID for Domain Insights */}} +{{ with $facebookAdmin }}<meta property="fb:admins" content="{{ . }}" />{{ end }} + +<!-- Twitter --> +<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/twitter_cards.html --> +<meta name="twitter:card" content="summary_large_image"/> +<meta name="twitter:image" content="{{ $card.Permalink | absURL }}"/> +<meta name="twitter:title" content="{{ .Title }}"/> +<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/> + +{{- /* Deprecate site.Social.twitter in favor of site.Params.social.twitter */}} +{{- $twitterSite := "" }} +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- $twitterSite = .twitter }} + {{- end }} +{{- else }} + {{- with site.Social.twitter }} + {{- $twitterSite = . }} + {{- warnf "The social key in site configuration is deprecated. Use params.social.twitter instead." }} + {{- end }} +{{- end }} + +{{- with $twitterSite }} + {{- $content := . }} + {{- if not (strings.HasPrefix . "@") }} + {{- $content = printf "@%v" $twitterSite }} + {{- end }} +<meta name="twitter:site" content="{{ $content }}"/> +{{- end }} + +<!-- Microdata --> +<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/schema.html --> +<meta itemprop="name" content="{{ .Title }}"> +<meta itemprop="description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}"> + +{{- if .IsPage -}} +{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} +{{ with .PublishDate }}<meta itemprop="datePublished" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end}} +{{ with .Lastmod }}<meta itemprop="dateModified" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end}} +<meta itemprop="wordCount" content="{{ .WordCount }}"> + +<meta itemprop="image" content="{{ $card.Permalink | absURL }}"/> + +<!-- Output all taxonomies as schema.org keywords --> +<meta itemprop="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" /> +{{- end -}} diff --git a/layouts/partials/style.html b/layouts/partials/style.html deleted file mode 100644 index 122a641..0000000 --- a/layouts/partials/style.html +++ /dev/null @@ -1,173 +0,0 @@ -<style> - body { - font-family: Verdana, sans-serif; - margin: auto; - padding: 20px; - max-width: 720px; - text-align: left; - background-color: #fff; - word-wrap: break-word; - overflow-wrap: break-word; - line-height: 1.5; - color: #444; - } - - h1, - h2, - h3, - h4, - h5, - h6, - strong, - b { - color: #222; - } - - a { - color: #3273dc; - /*color: #ff5e6c;*/ - } - - .title { - text-decoration: none; - border: 0; - } - - .title span { - font-weight: 400; - } - - nav a { - margin-right: 10px; - } - - textarea { - width: 100%; - font-size: 16px; - } - - input { - font-size: 16px; - } - - content { - line-height: 1.6; - } - - table { - width: 100%; - } - - img { - max-width: 100%; - } - - code { - padding: 2px 5px; - background-color: #f2f2f2; - } - - pre code { - color: #222; - display: block; - padding: 20px; - white-space: pre-wrap; - font-size: 14px; - overflow-x: auto; - } - - div.highlight pre { - background-color: initial; - color: initial; - } - - div.highlight code { - background-color: unset; - color: unset; - } - - blockquote { - border-left: 1px solid #999; - color: #222; - padding-left: 20px; - font-style: italic; - } - - footer { - padding: 25px; - text-align: center; - } - - .helptext { - color: #777; - font-size: small; - } - - .errorlist { - color: #eba613; - font-size: small; - } - - /* blog posts */ - ul.blog-posts { - list-style-type: none; - padding: unset; - } - - ul.blog-posts li { - display: flex; - } - - ul.blog-posts li span { - flex: 0 0 130px; - } - - ul.blog-posts li a:visited { - color: #8b6fcb; - } - - @media (prefers-color-scheme: dark) { - body { - background-color: #333; - color: #ddd; - } - - h1, - h2, - h3, - h4, - h5, - h6, - strong, - b { - color: #eee; - } - - a { - color: #8cc2dd; - } - - code { - background-color: #777; - } - - pre code { - color: #ddd; - } - - blockquote { - color: #ccc; - } - - textarea, - input { - background-color: #252525; - color: #ddd; - } - - .helptext { - color: #aaa; - } - } - -</style> |