From bde44fadf20a1f91a466653f9552ce8bd658e2f9 Mon Sep 17 00:00:00 2001
From: Simon Späti <simu@sspaeti.com>
Date: Tue, 07 Feb 2023 08:16:15 +0000
Subject: [PATCH] feat: Adding Twitter and Social image preview including description (#207)

---
 layouts/partials/head.html |   63 ++++++++++++++++++++-----------
 1 files changed, 41 insertions(+), 22 deletions(-)

diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index 5ea0aa3..5c8d661 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -1,6 +1,7 @@
 <!-- set data/config yaml file based on website language -->
 {{ $config := cond (eq $.Site.Language.Lang "en") "config" (printf "config.%s" $.Site.Language.Lang) }}
 {{ $data := index $.Site.Data $config }}
+{{.Site.BaseURL}}icon.png
 <head>
   <!-- Meta tags -->
   <meta charset="UTF-8" />
@@ -8,6 +9,23 @@
     name="description"
     content="{{if .IsHome}}{{$data.description | default $.Site.Data.config.description}}{{else}}{{.Summary}}{{end}}"
   />
+  <meta property="og:title" content="{{ .Title }}">
+  <meta property="og:type" content="website">
+  <meta property="og:image" content="{{.Site.BaseURL}}icon.png">
+  <meta property="og:url" content="{{ .Permalink }}">
+  <meta property="og:width" content="200">
+  <meta property="og:height" content="200">
+  <meta name="twitter:card" content="summary" />
+  <meta name="twitter:title" content="{{ .Title }}" />
+  <meta name="twitter:description" content="{{if .IsHome}}{{$data.description | default $.Site.Data.config.description}}{{else}}{{.Summary}}{{end}}" />
+  <meta name="twitter:image" content="{{.Site.BaseURL}}icon.png">
+  {{ range $data.links }}
+    {{ if strings.Contains .link "twitter.com" }}
+      {{ $twitter_handle := index (split .link "/") (sub (len (split .link "/")) 1) }}
+      <meta name="twitter:site" content="{{ $twitter_handle }}" />
+    {{ end }}
+  {{ end }}
+
   <title>
     {{ if .Title }}{{ .Title }}{{ else }}{{ $data.page_title | default $.Site.Data.config.page_title }}{{
     end }}
@@ -160,6 +178,29 @@
           )
         }
       {{end}}
+      
+      // analytics
+      function clickHandler(evt) {
+        const target = evt.target 
+        const classNames = target.className.split(" ")
+        const broken = classNames.includes("broken")
+        const internal = classNames.includes("internal-link")
+        plausible("Link Click", {
+          props: {
+            href: target.href,
+            broken,
+            internal,
+            graph: false,
+          }
+        })
+      }
+
+      const links = document.querySelectorAll("a")
+      for (link of links) {
+        if (link.className.includes("root-title")) {
+          link.addEventListener('click', clickHandler, {once: true})
+        }
+      }
     }
 
     const init = (doc = document) => {
@@ -183,28 +224,6 @@
         throwOnError : false
       });
       {{end}}
-
-      // analytics
-      function clickHandler(evt) {
-        const target = evt.target 
-        const classNames = target.className.split(" ")
-        const broken = classNames.includes("broken")
-        const internal = classNames.includes("internal-link")
-        plausible("Link Click", {
-          props: {
-            href: target.href,
-            broken,
-            internal,
-            graph: false,
-          }
-        })
-      }
-
-      const links = document.querySelectorAll("a")
-      for (link of links) {
-        link.addEventListener('click', clickHandler)
-        link.addEventListener('auxclick', clickHandler)
-      }
     };
   </script>
   {{if $data.enableSPA | default $.Site.Data.config.enableSPA}}

--
Gitblit v1.10.0