mirror of
https://github.com/nunocoracao/blowfish.git
synced 2026-01-30 16:31:52 +01:00
Add `defaultSocialImage` as the default image for social media sharing. This feature would be useful for users who don’t want to specify an image for every article. This PR also resolves the issue where the homepage missing an image when shared.
166 lines
7.0 KiB
HTML
166 lines
7.0 KiB
HTML
<head>
|
|
<meta charset="utf-8" />
|
|
{{ with .Site.Language.Params.htmlCode | default .Site.LanguageCode }}
|
|
<meta http-equiv="content-language" content="{{ . }}" />
|
|
{{ end }}
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
|
{{/* Title */}}
|
|
{{ if .IsHome -}}
|
|
<title>{{ .Site.Title | emojify }}</title>
|
|
<meta name="title" content="{{ .Site.Title | emojify }}" />
|
|
{{- else -}}
|
|
<title>{{ .Title | emojify }} · {{ .Site.Title | emojify }}</title>
|
|
<meta name="title" content="{{ .Title | emojify }} · {{ .Site.Title | emojify }}" />
|
|
{{- end }}
|
|
{{/* Metadata */}}
|
|
{{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description -}}
|
|
<meta name="description" content="{{ . }}" />
|
|
{{- end }}
|
|
{{ with .Params.Tags | default .Site.Params.keywords -}}
|
|
<meta name="keywords" content="{{ range . }}{{ . }}, {{ end -}}" />
|
|
{{- end }}
|
|
{{ with .Site.Params.robots }}
|
|
<meta name="robots" content="{{ . }}" />
|
|
{{ end }}
|
|
{{ with .Params.robots }}
|
|
<meta name="robots" content="{{ . }}" />
|
|
{{ end }}
|
|
<link rel="canonical" href="{{ .Permalink }}" />
|
|
{{ range .AlternativeOutputFormats -}}
|
|
{{ printf `
|
|
<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) |
|
|
safeHTML }}
|
|
{{ end -}}
|
|
{{/* Asset bundles */}}
|
|
{{ $assets := newScratch }}
|
|
{{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (.Site.Params.colorScheme | default "blowfish")) }}
|
|
{{ if not $cssScheme }}
|
|
{{ $cssScheme = resources.Get "css/schemes/blowfish.css" }}
|
|
{{ end }}
|
|
{{ $assets.Add "css" (slice $cssScheme) }}
|
|
{{ $cssMain := resources.Get "css/compiled/main.css" }}
|
|
{{ $assets.Add "css" (slice $cssMain) }}
|
|
{{ $cssCustom := resources.Get "css/custom.css" }}
|
|
{{ if $cssCustom }}
|
|
{{ $assets.Add "css" (slice $cssCustom) }}
|
|
{{ end }}
|
|
{{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint
|
|
"sha512" }}
|
|
<link type="text/css" rel="stylesheet" href="{{ $bundleCSS.RelPermalink }}"
|
|
integrity="{{ $bundleCSS.Data.Integrity }}" />
|
|
{{ $jsAppearance := resources.Get "js/appearance.js" }}
|
|
{{ $jsAppearance = $jsAppearance | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint "sha512" }}
|
|
<script type="text/javascript" src="{{ $jsAppearance.RelPermalink }}"
|
|
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
|
|
{{ if .Site.Params.enableSearch | default false }}
|
|
{{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }}
|
|
{{ $jsSearch := resources.Get "js/search.js" }}
|
|
{{ $assets.Add "js" (slice $jsFuse $jsSearch) }}
|
|
{{ end }}
|
|
{{ if .Site.Params.enableCodeCopy | default false }}
|
|
{{ $jsCode := resources.Get "js/code.js" }}
|
|
{{ $assets.Add "js" (slice $jsCode) }}
|
|
{{ end }}
|
|
{{ if .Site.Params.rtl | default false }}
|
|
{{ $jsRTL := resources.Get "js/rtl.js" }}
|
|
{{ $assets.Add "js" (slice $jsRTL) }}
|
|
{{ end }}
|
|
{{ $jsMobileMenu := resources.Get "js/mobilemenu.js" }}
|
|
{{ $assets.Add "js" (slice $jsMobileMenu) }}
|
|
{{ if $assets.Get "js" }}
|
|
{{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
|
|
"sha512" }}
|
|
<script defer type="text/javascript" id="script-bundle" src="{{ $bundleJS.RelPermalink }}"
|
|
integrity="{{ $bundleJS.Data.Integrity }}" data-copy="{{ i18n "code.copy" }}" data-copied="{{ i18n "code.copied"
|
|
}}"></script>
|
|
{{ end }}
|
|
{{ if not .Site.Params.disableImageZoom | default true }}
|
|
{{ $zoomJS := resources.Get "lib/zoom/zoom.min.js" | resources.Fingerprint "sha512" }}
|
|
<script src="{{ $zoomJS.RelPermalink }}" integrity="{{ $zoomJS.Data.Integrity }}"></script>
|
|
{{ end }}
|
|
{{/* Icons */}}
|
|
{{ if templates.Exists "partials/favicons.html" }}
|
|
{{ partialCached "favicons.html" .Site }}
|
|
{{ else }}
|
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}" />
|
|
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}" />
|
|
{{ end }}
|
|
{{/* Site Verification */}}
|
|
{{ with .Site.Params.verification.google }}
|
|
<meta name="google-site-verification" content="{{ . }}" />
|
|
{{ end }}
|
|
{{ with .Site.Params.verification.bing }}
|
|
<meta name="msvalidate.01" content="{{ . }}" />
|
|
{{ end }}
|
|
{{ with .Site.Params.verification.pinterest }}
|
|
<meta name="p:domain_verify" content="{{ . }}" />
|
|
{{ end }}
|
|
{{ with .Site.Params.verification.yandex }}
|
|
<meta name="yandex-verification" content="{{ . }}" />
|
|
{{ end }}
|
|
{{ with .Site.Params.verification.fediverse }}
|
|
<meta name="fediverse:creator" content="{{ . }}" />
|
|
{{ end }}
|
|
{{/* Social */}}
|
|
{{ template "_internal/opengraph.html" . }}
|
|
{{ template "_internal/twitter_cards.html" . }}
|
|
{{- /* Image for both main page and backoff if not `*feature*` image found */ -}}
|
|
{{- /* See https://gohugo.io/templates/embedded/#open-graph */ -}}
|
|
{{ if not ($.Resources.GetMatch "*feature*") }}
|
|
{{ with .Site.Params.defaultSocialImage }}
|
|
<meta name="twitter:image" content="{{ . | absURL }}" />
|
|
<meta property="og:image" content="{{ . | absURL }}" />
|
|
{{ end }}
|
|
{{ end }}
|
|
{{/* Schema */}}
|
|
{{ partial "schema.html" . }}
|
|
{{/* Me */}}
|
|
{{ with .Site.Params.Author.name }}
|
|
<meta name="author" content="{{ . }}" />{{ end }}
|
|
{{ with .Site.Params.Author.links }}
|
|
{{ range $links := . }}
|
|
{{ range $name, $url := $links }}
|
|
{{ if not (strings.HasPrefix $url "mailto:") }}
|
|
<link href="{{ $url }}" rel="me" />{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{/* Vendor */}}
|
|
{{ partial "vendor.html" . }}
|
|
{{/* Analytics */}}
|
|
{{ partial "analytics/main.html" .Site }}
|
|
{{/* Extend head - eg. for custom analytics scripts, etc. */}}
|
|
{{ if templates.Exists "partials/extend-head.html" }}
|
|
{{ partialCached "extend-head.html" .Site }}
|
|
{{ end }}
|
|
<meta name="theme-color"/>
|
|
{{/* Firebase */}}
|
|
{{ with $.Site.Params.firebase }}
|
|
{{ if isset $.Site.Params "firebase" }}
|
|
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
|
|
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js"></script>
|
|
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-auth.js"></script>
|
|
<script>
|
|
|
|
const firebaseConfig = {
|
|
apiKey: {{ $.Site.Params.firebase.apiKey }},
|
|
authDomain: {{ $.Site.Params.firebase.apiKey }},
|
|
projectId: {{ $.Site.Params.firebase.projectId }},
|
|
storageBucket: {{ $.Site.Params.firebase.storageBucket }},
|
|
messagingSenderId: {{ $.Site.Params.firebase.messagingSenderId }},
|
|
appId: {{ $.Site.Params.firebase.appId }},
|
|
measurementId: {{ $.Site.Params.firebase.measurementId }}
|
|
};
|
|
|
|
var app = firebase.initializeApp(firebaseConfig);
|
|
var db = firebase.firestore();
|
|
var auth = firebase.auth();
|
|
|
|
</script>
|
|
{{ end }}
|
|
{{ end }}
|
|
</head>
|