forked from drowl87/hextra_mirror

By adding `canonical` parameter to the front matter and specifying the URL, the canonical URL is added. If no canonical URL is needed to be specified, the layout will use the current page address for canonical tag. Example: ``` --- title: "Page Title" description: "Page description" canonical: "https://canonicalurl.com" ---
65 lines
2.0 KiB
HTML
65 lines
2.0 KiB
HTML
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
{{ if hugo.IsProduction -}}
|
||
<meta name="robots" content="index, follow" />
|
||
{{ else -}}
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
{{ end -}}
|
||
{{ partialCached "favicons.html" . }}
|
||
<title>
|
||
{{- if .IsHome -}}
|
||
{{ .Site.Title -}}
|
||
{{ else -}}
|
||
{{ with .Title }}{{ . }} – {{ end -}}
|
||
{{ .Site.Title -}}
|
||
{{ end -}}
|
||
</title>
|
||
<meta name="description" content="{{ partial "utils/page-description.html" . }}" />
|
||
|
||
{{ with .Params.canonical }}
|
||
<link rel="canonical" href="{{ . }}" itemprop="url" />
|
||
{{ else }}
|
||
<link rel="canonical" href="{{ .Permalink }}" itemprop="url" />
|
||
{{ end }}
|
||
|
||
{{ partial "opengraph.html" . }}
|
||
{{ template "_internal/schema.html" . -}}
|
||
{{ template "_internal/twitter_cards.html" . -}}
|
||
|
||
{{ partialCached "head-css.html" . }}
|
||
|
||
|
||
<!-- Google Analytics -->
|
||
{{- if and (eq hugo.Environment "production") (or .Site.GoogleAnalytics .Site.Config.Services.GoogleAnalytics.ID) }}
|
||
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin />
|
||
{{ partial "google-analytics.html" . }}
|
||
{{- end }}
|
||
|
||
|
||
<script>
|
||
/* Initialize light/dark mode */
|
||
const defaultTheme = '{{ site.Params.theme.default | default `system`}}';
|
||
|
||
const setDarkTheme = () => {
|
||
document.documentElement.classList.add("dark");
|
||
document.documentElement.style.colorScheme = "dark";
|
||
}
|
||
const setLightTheme = () => {
|
||
document.documentElement.classList.remove("dark");
|
||
document.documentElement.style.colorScheme = "light";
|
||
}
|
||
|
||
if ("color-theme" in localStorage) {
|
||
localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme();
|
||
} else {
|
||
defaultTheme === "dark" ? setDarkTheme() : setLightTheme();
|
||
if (defaultTheme === "system") {
|
||
window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme();
|
||
}
|
||
}
|
||
</script>
|
||
|
||
{{ partial "custom/head-end.html" . }}
|
||
</head>
|