1
0
mirror of https://github.com/alanorth/hugo-theme-bootstrap4-blog.git synced 2025-06-27 01:55:20 +02:00
Files
archetypes
build
data
exampleSite
i18n
images
layouts
_default
baseof.html
list.html
single.html
summary.html
partials
404.html
robots.txt
source
static
.gitignore
.travis.yml
LICENSE.txt
README.md
package.json
screenshot.png
theme.toml
hugo-theme-bootstrap4-blog/layouts/_default/baseof.html
Alan Orth 8ab05ae625 Add Schema.org implementation based on JSON-LD
This replaces the metadata that Hugo's own schema.html template had
been providing, but does so in JSON-LD notation rather than via the
use of <meta> tags (this is Google's currently recommended form of
specifying this markup). There are a few exceptions where I did not
follow the conventions used in Hugo's template, for example the use
of up to six images from a post's frontmatter, because Google's tool
only recognizes one image, as well as different logic for a post's
publish and modified dates (using enableGitInfo = true).

Using this new markup, Google's Structured Data Testing Tool is now
able to understand site metadata much better (before it was reading
none).

The implementation here is a mix of the elements and types from the
official Schema.org types—for example, Blog and BlogPosting—as well
as from Google's search documentation. Note that Google's docs are
geared towards AMP, where some metadata is required, while for non-
AMP pages the metadata is just recommended.

We will have to re-evaluate this in the future, for example to add
height and width information to image metadata.

See: https://schema.org/Blog
See: https://schema.org/BlogPosting
See: https://developers.google.com/search/docs/data-types/data-type-selector
See: https://search.google.com/structured-data/testing-tool
2017-01-20 15:58:30 +02:00

91 lines
2.7 KiB
HTML

<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
{{ partial "head-meta.html" . }}
{{ block "schema-dot-org" . }}
<!-- schema.org metadata differs for Nodes and Pages -->
{{ end }}
<link rel="canonical" href="{{ .Permalink }}">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{ "<!-- combined, minified CSS -->" | safeHTML }}
<link href="{{ .Site.BaseURL }}css/style.css" rel="stylesheet" integrity="{{ .Site.Data.sri.style}}" crossorigin="anonymous">
{{ if .RSSLink }}
{{ "<!-- RSS 2.0 feed -->" | safeHTML }}
<link href="{{ .RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}" />
{{ end }}
{{ template "_internal/google_analytics_async.html" . }}
{{ if .Site.Params.cookie_consent_info_url }}
{{ partial "cookie-consent.html" . }}
{{ end }}
{{ partial "head-custom.html" . }}
</head>
<body>
<div class="blog-masthead">
<div class="container">
<nav class="nav blog-nav">
<a class="nav-link {{ if .IsHome }}active{{ end }}" href="{{ .Site.BaseURL | absLangURL }}">{{ i18n "home" }}</a>
{{ if .Site.Params.custom_navbar }}
{{ range .Site.Menus.navbar }}
<a class="nav-link" href="{{.URL | absURL }}">{{ .Name }}</a>
{{ end }}
{{ else }}
{{ range where .Site.RegularPages "Type" "!=" "post" }}
<a class="nav-link" href="{{ .Permalink }}">{{ .Title }}</a>
{{ end }}
{{ end }}
</nav>
</div>
</div>
<header class="blog-header">
<div class="container">
<h1 class="blog-title"><a href="{{ .Site.BaseURL }}" rel="home">{{ .Site.Title | safeHTML }}</a></h1>
{{ if .Site.Params.description }}<p class="lead blog-description">{{ .Site.Params.description | markdownify }}</p>{{ end }}
</div>
</header>
<div class="container">
<div class="row">
<div class="col-sm-8 blog-main">
{{ block "main" . }}
<!-- The part of the page that begins to differ between templates -->
{{ end }}
</div> {{ "<!-- /.blog-main -->" | safeHTML }}
{{ partial "sidebar.html" . }}
</div> {{ "<!-- /.row -->" | safeHTML }}
</div> {{ "<!-- /.container -->" | safeHTML }}
<footer class="blog-footer">
<p>
{{ if .Site.Copyright }}
{{ .Site.Copyright | markdownify }}
{{ else }}
Blog template created by <a href="https://twitter.com/mdo">@mdo</a>, ported to Hugo by <a href='https://twitter.com/mralanorth'>@mralanorth</a>.
{{ end }}
</p>
<p>
<a href="#">{{ i18n "backToTop" }}</a>
</p>
</footer>
</body>
</html>
{{- /* vim: set ts=2 sw=2 et: */}}