mirror of
https://github.com/alanorth/hugo-theme-bootstrap4-blog.git
synced 2024-11-18 10:17:04 +01:00
Alan Orth
f7d9451aa6
This is similar to other encoding issues we have fixed lately where we need to make sure Hugo (or Golang's HTML template library) does not escape our non-ASCII content. For example, this is how our datetimes end up currently: <p class="blog-post-meta"><time datetime="2020-01-16T09:23:20+02:00">Thu Jan 16, 2020</time> by Alan Orth After printing them with `printf` and filtering them with the Hugo built-in function `safeHTMLAttr` they look like this: <p class="blog-post-meta"><time datetime="2020-01-16T09:23:20+02:00">Thu Jan 16, 2020</time> by Alan Orth See: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html See: https://github.com/alanorth/hugo-theme-bootstrap4-blog/pull/111
93 lines
2.8 KiB
HTML
93 lines
2.8 KiB
HTML
{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }}
|
|
|
|
{{ define "schema-dot-org" }}
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "http://schema.org",
|
|
"@type": "BlogPosting",
|
|
{{- /* Google recommends the headline be no more than 110 characters */}}
|
|
"headline": {{ substr .Title 0 110 }},
|
|
{{- with .Params.images -}}{{ range first 1 . }}
|
|
"image": {
|
|
"@type": "ImageObject",
|
|
"url": {{ . | absURL }}
|
|
{{- /* Don't try to get imageConfig if image param is not local */ -}}
|
|
{{- if not (or (hasPrefix . "http://") (hasPrefix . "https://")) -}}
|
|
{{- with (imageConfig (printf "/static/%s" .)) -}}
|
|
,
|
|
"height": "{{ .Height }}",
|
|
"width": "{{ .Width }}"
|
|
{{- end -}}
|
|
{{ end }}
|
|
},
|
|
{{- end -}}{{ end }}
|
|
"url": {{ printf "%s" .Permalink }},
|
|
"wordCount": "{{ .WordCount }}",
|
|
{{- $ISO8601 := "2006-01-02T15:04:05-07:00" }}
|
|
{{- if not .PublishDate.IsZero }}
|
|
"datePublished": {{ .PublishDate.Format $ISO8601 }},
|
|
{{- else }}
|
|
"datePublished": {{ .Date.Format $ISO8601 }},
|
|
{{- end }}
|
|
{{- if not .Lastmod.IsZero }}
|
|
"dateModified": {{ .Lastmod.Format $ISO8601 }},
|
|
{{- end }}
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": {{ .Params.author | default .Site.Params.author }}
|
|
}
|
|
{{- if or (.Params.keywords) (or (.Params.categories) (.Params.tags)) -}}
|
|
,
|
|
"keywords": {{ delimit (union .Params.keywords (union .Params.categories .Params.tags)) ", " }}
|
|
{{- end }}
|
|
|
|
{{- with .Params.description -}}
|
|
,
|
|
"description": {{ . }}
|
|
{{- end }}
|
|
}
|
|
</script>
|
|
|
|
{{ end }}
|
|
|
|
{{ define "main" }}
|
|
{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }}
|
|
|
|
<article class="blog-post">
|
|
<header>
|
|
<h2 class="blog-post-title" dir="auto"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h2>
|
|
<p class="blog-post-meta"><time {{ .Date.Format "2006-01-02T15:04:05Z07:00" | printf "datetime=%q" | safeHTMLAttr }}>{{ .Date.Format $dateFormat }}</time> {{ i18n "authoredBy" }} {{ .Params.author | default .Site.Params.author }}{{ if or (.Params.categories) (.Params.tags) }} {{ i18n "postedIn" }} {{ partial "meta-terms.html" . }}{{ end }}</p>
|
|
</header>
|
|
{{ .Content }}
|
|
|
|
{{ if .IsTranslated }}
|
|
<h4>{{ i18n "translations" }}</h4>
|
|
<ul>
|
|
{{ range .Translations }}
|
|
<li>
|
|
<a href="{{ .Permalink }}">{{ .Lang }}: {{ .Title }}{{ if .IsPage }}{{ end }}</a>
|
|
</li>
|
|
{{ end }}
|
|
</ul>
|
|
{{ end }}
|
|
|
|
{{ if or (ne ($.Param "sharingicons") false) (.Site.DisqusShortname) }}
|
|
<hr>
|
|
<footer>
|
|
|
|
{{ if (ne ($.Param "sharingicons") false) }}
|
|
{{ partial "sharing-icons.html" . }}
|
|
{{ end }}
|
|
|
|
{{ if and (.Site.DisqusShortname) (ne .Params.comments false) }}
|
|
{{ template "_internal/disqus.html" . }}
|
|
{{ end }}
|
|
</footer>
|
|
{{ end }}
|
|
|
|
</article> <!-- /.blog-post -->
|
|
|
|
{{ end }}
|
|
|
|
{{- /* vim: set ts=2 sw=2 et: */}}
|