116 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="{{ .Site.LanguageCode | default "en" }}">
 | |
|   <head>
 | |
|     <meta charset="utf-8" />
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | |
|     
 | |
|     {{/* Generate consistent title */}}
 | |
|     {{ $title := "" }}
 | |
|     {{ if .Params.narrator }}
 | |
|       {{ $title = printf "%s: %s" .Params.narrator .Params.subject }}
 | |
|     {{ else if .IsHome }}
 | |
|       {{ $title = .Title }}
 | |
|     {{ else }}
 | |
|       {{ $title = printf "%s - %s" .Title .Site.Title }}
 | |
|     {{ end }}
 | |
|     
 | |
|     <!-- Basic SEO -->
 | |
|     <title>{{ $title }}{{ if .Params.narrator }} - {{ .Site.Title }}{{ end }}</title>
 | |
|     
 | |
|     {{/* Generate description from summary, description, or default site description */}}
 | |
|     {{ $description := "" }}
 | |
|     {{ with .Description }}
 | |
|       {{ $description = . }}
 | |
|     {{ else }}
 | |
|       {{ with .Summary }}
 | |
|         {{ $description = . | plainify | truncate 160 }}
 | |
|       {{ else }}
 | |
|         {{ $description = .Site.Params.description }}
 | |
|       {{ end }}
 | |
|     {{ end }}
 | |
|     <meta name="description" content="{{ $description }}" />
 | |
|     
 | |
|     {{/* Generate keywords from topics */}}
 | |
|     {{ with .Params.topics }}
 | |
|     <meta name="keywords" content="{{ delimit . ", " }}" />
 | |
|     {{ end }}
 | |
|     
 | |
|     <!-- Open Graph / Facebook -->
 | |
|     <meta property="og:site_name" content="{{ .Site.Title }}" />
 | |
|     <meta property="og:type" content="{{ if .IsPage }}interview{{ else }}website{{ end }}" />
 | |
|     <meta property="og:url" content="{{ .Permalink }}" />
 | |
|     <meta property="og:title" content="{{ $title }}" />
 | |
|     <meta property="og:description" content="{{ $description }}" />
 | |
|     {{ with .Params.ogImage | default .Site.Params.openGraphImage }}
 | |
|     <meta property="og:image" content="{{ . | absURL }}" />
 | |
|     {{ end }}
 | |
|     
 | |
|     <!-- Twitter -->
 | |
|     <meta name="twitter:card" content="summary_large_image" />
 | |
|     <meta name="twitter:title" content="{{ $title }}" />
 | |
|     <meta name="twitter:description" content="{{ $description }}" />
 | |
|     {{ with .Params.ogImage | default .Site.Params.openGraphImage }}
 | |
|     <meta name="twitter:image" content="{{ . | absURL }}" />
 | |
|     {{ end }}
 | |
|     
 | |
|     <!-- Interview Specific -->
 | |
|     {{ if and .IsPage (eq .Type "interviews") }}
 | |
|       <meta property="interview:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />
 | |
|       <meta property="interview:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />
 | |
|       <meta property="interview:section" content="Oral History" />
 | |
|       {{ with .Params.topics }}
 | |
|         {{ range . }}
 | |
|         <meta property="interview:tag" content="{{ . }}" />
 | |
|         {{ end }}
 | |
|       {{ end }}
 | |
|       
 | |
|       {{/* Author information using standard meta topics instead of interview:author */}}
 | |
|       {{ with .Params.narrator }}
 | |
|       <meta name="author" content="{{ . }}" />
 | |
|       {{ end }}
 | |
|       {{ with .Params.facilitator }}
 | |
|       <meta name="interviewer" content="{{ . }}" />
 | |
|       {{ end }}
 | |
|     {{ end }}
 | |
|     
 | |
|     <!-- Canonical URL -->
 | |
|     <link rel="canonical" href="{{ .Permalink }}" />
 | |
|     
 | |
|     <!-- CSS Styles -->
 | |
|     {{ partial "css.html" . }}
 | |
| 
 | |
| 
 | |
|     <!-- Matomo -->
 | |
|     <script>
 | |
|       var _paq = window._paq = window._paq || [];
 | |
|       /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 | |
|       _paq.push(['trackPageView']);
 | |
|       _paq.push(['enableLinkTracking']);
 | |
|       (function() {
 | |
|         var u="https://analytics.medlab.host/";
 | |
|         _paq.push(['setTrackerUrl', u+'matomo.php']);
 | |
|         _paq.push(['setSiteId', '8']);
 | |
|         var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
 | |
|         g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
 | |
|       })();
 | |
|     </script>
 | |
|     <!-- End Matomo Code -->
 | |
| 
 | |
|   </head>
 | |
|   <body class="">
 | |
|     {{ partial "header.html" . }}
 | |
|     <div class="px-4 lg:mx-auto">
 | |
|       {{ block "main" . }}{{ end }}
 | |
|     </div>
 | |
|     {{ partial "footer.html" . }}
 | |
|     
 | |
|     {{ $js := resources.Match "js/*.js" | resources.Concat "js/bundle.js" }}
 | |
|     {{ if hugo.IsProduction }}
 | |
|       {{ $js = $js | minify | fingerprint }}
 | |
|       <script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
 | |
|     {{ else }}
 | |
|       <script src="{{ $js.RelPermalink }}"></script>
 | |
|     {{ end }}
 | |
|   </body>
 | |
| </html>
 |