浏览代码

Add analytics template + Add Ko-Fi donation button + Host fonts locally (#530)

* Add Blogtrottr as newsletter provider

* Fixed absLangURL issue with sections in footer

* Fixes LaTeX support

Makes scripts fully local and only loads them if math:true. Adds support for 18462\latex18462 or even $\latex$

* Added 2 New, Privacy-Friendly Analytics Methods

Counter.dev and GoatAnalytics. Google Analytics should keep working the same

* Removed 1 CDN

* Moved params under features

* Added Ko-Fi floating button for support

* Refactor analytics code + Add local fonts

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

Co-authored-by: Pablo Marcos <codebergflamingo@staplehorse.anonaddy.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
Pablo Marcos 3 年之前
父节点
当前提交
91b18c0f04
共有 80 个文件被更改,包括 98 次插入30 次删除
  1. 7 10
      layouts/_default/baseof.html
  2. 6 10
      layouts/index.html
  3. 46 0
      layouts/partials/analytics.html
  4. 4 3
      layouts/partials/header.html
  5. 14 4
      layouts/partials/math.html
  6. 16 0
      layouts/partials/misc/support.html
  7. 0 3
      layouts/partials/scripts.html
  8. 5 0
      static/fontawesome/css/all.min.css
  9. 二进制
      static/fontawesome/webfonts/fa-brands-400.ttf
  10. 二进制
      static/fontawesome/webfonts/fa-brands-400.woff2
  11. 二进制
      static/fontawesome/webfonts/fa-regular-400.ttf
  12. 二进制
      static/fontawesome/webfonts/fa-regular-400.woff2
  13. 二进制
      static/fontawesome/webfonts/fa-solid-900.ttf
  14. 二进制
      static/fontawesome/webfonts/fa-solid-900.woff2
  15. 二进制
      static/fontawesome/webfonts/fa-v4compatibility.ttf
  16. 二进制
      static/fontawesome/webfonts/fa-v4compatibility.woff2
  17. 0 0
      static/js/katex.min.js
  18. 0 0
      static/katex/auto-render.min.js
  19. 二进制
      static/katex/fonts/KaTeX_AMS-Regular.ttf
  20. 二进制
      static/katex/fonts/KaTeX_AMS-Regular.woff
  21. 二进制
      static/katex/fonts/KaTeX_AMS-Regular.woff2
  22. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Bold.ttf
  23. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Bold.woff
  24. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Bold.woff2
  25. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Regular.ttf
  26. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Regular.woff
  27. 二进制
      static/katex/fonts/KaTeX_Caligraphic-Regular.woff2
  28. 二进制
      static/katex/fonts/KaTeX_Fraktur-Bold.ttf
  29. 二进制
      static/katex/fonts/KaTeX_Fraktur-Bold.woff
  30. 二进制
      static/katex/fonts/KaTeX_Fraktur-Bold.woff2
  31. 二进制
      static/katex/fonts/KaTeX_Fraktur-Regular.ttf
  32. 二进制
      static/katex/fonts/KaTeX_Fraktur-Regular.woff
  33. 二进制
      static/katex/fonts/KaTeX_Fraktur-Regular.woff2
  34. 二进制
      static/katex/fonts/KaTeX_Main-Bold.ttf
  35. 二进制
      static/katex/fonts/KaTeX_Main-Bold.woff
  36. 二进制
      static/katex/fonts/KaTeX_Main-Bold.woff2
  37. 二进制
      static/katex/fonts/KaTeX_Main-BoldItalic.ttf
  38. 二进制
      static/katex/fonts/KaTeX_Main-BoldItalic.woff
  39. 二进制
      static/katex/fonts/KaTeX_Main-BoldItalic.woff2
  40. 二进制
      static/katex/fonts/KaTeX_Main-Italic.ttf
  41. 二进制
      static/katex/fonts/KaTeX_Main-Italic.woff
  42. 二进制
      static/katex/fonts/KaTeX_Main-Italic.woff2
  43. 二进制
      static/katex/fonts/KaTeX_Main-Regular.ttf
  44. 二进制
      static/katex/fonts/KaTeX_Main-Regular.woff
  45. 二进制
      static/katex/fonts/KaTeX_Main-Regular.woff2
  46. 二进制
      static/katex/fonts/KaTeX_Math-BoldItalic.ttf
  47. 二进制
      static/katex/fonts/KaTeX_Math-BoldItalic.woff
  48. 二进制
      static/katex/fonts/KaTeX_Math-BoldItalic.woff2
  49. 二进制
      static/katex/fonts/KaTeX_Math-Italic.ttf
  50. 二进制
      static/katex/fonts/KaTeX_Math-Italic.woff
  51. 二进制
      static/katex/fonts/KaTeX_Math-Italic.woff2
  52. 二进制
      static/katex/fonts/KaTeX_SansSerif-Bold.ttf
  53. 二进制
      static/katex/fonts/KaTeX_SansSerif-Bold.woff
  54. 二进制
      static/katex/fonts/KaTeX_SansSerif-Bold.woff2
  55. 二进制
      static/katex/fonts/KaTeX_SansSerif-Italic.ttf
  56. 二进制
      static/katex/fonts/KaTeX_SansSerif-Italic.woff
  57. 二进制
      static/katex/fonts/KaTeX_SansSerif-Italic.woff2
  58. 二进制
      static/katex/fonts/KaTeX_SansSerif-Regular.ttf
  59. 二进制
      static/katex/fonts/KaTeX_SansSerif-Regular.woff
  60. 二进制
      static/katex/fonts/KaTeX_SansSerif-Regular.woff2
  61. 二进制
      static/katex/fonts/KaTeX_Script-Regular.ttf
  62. 二进制
      static/katex/fonts/KaTeX_Script-Regular.woff
  63. 二进制
      static/katex/fonts/KaTeX_Script-Regular.woff2
  64. 二进制
      static/katex/fonts/KaTeX_Size1-Regular.ttf
  65. 二进制
      static/katex/fonts/KaTeX_Size1-Regular.woff
  66. 二进制
      static/katex/fonts/KaTeX_Size1-Regular.woff2
  67. 二进制
      static/katex/fonts/KaTeX_Size2-Regular.ttf
  68. 二进制
      static/katex/fonts/KaTeX_Size2-Regular.woff
  69. 二进制
      static/katex/fonts/KaTeX_Size2-Regular.woff2
  70. 二进制
      static/katex/fonts/KaTeX_Size3-Regular.ttf
  71. 二进制
      static/katex/fonts/KaTeX_Size3-Regular.woff
  72. 二进制
      static/katex/fonts/KaTeX_Size3-Regular.woff2
  73. 二进制
      static/katex/fonts/KaTeX_Size4-Regular.ttf
  74. 二进制
      static/katex/fonts/KaTeX_Size4-Regular.woff
  75. 二进制
      static/katex/fonts/KaTeX_Size4-Regular.woff2
  76. 二进制
      static/katex/fonts/KaTeX_Typewriter-Regular.ttf
  77. 二进制
      static/katex/fonts/KaTeX_Typewriter-Regular.woff
  78. 二进制
      static/katex/fonts/KaTeX_Typewriter-Regular.woff2
  79. 0 0
      static/katex/katex.min.css
  80. 0 0
      static/katex/katex.min.js

+ 7 - 10
layouts/_default/baseof.html

@@ -9,16 +9,9 @@
     <!------ ADD PAGE SPECIFIC HEADERS ------->
     {{ block "header" . }} {{ end }}
 
-    <!-- ADD GOOGLE ANALYTICS IF ENABLED -->
-    {{ if site.GoogleAnalytics }}
-        <!-- Google Analytics v3  ID -->
-        {{ if hasPrefix site.GoogleAnalytics "UA-"}}
-          {{ template "_internal/google_analytics_async.html" . }}
-        {{ else }}
-          <!-- Google Analytics v4  ID -->
-          {{ template "_internal/google_analytics.html" . }}
-        {{ end }}
-    {{ end }}
+    <!--================= add analytics if enabled =========================-->
+    {{- partial "analytics.html" . -}}
+
   </head>
 
   <body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
@@ -45,5 +38,9 @@
 
     <!------- ADD PAGE SPECIFIC SCRIPTS ------>
     {{ block "scripts" . }} {{ end }}
+
+    <!------ IF WANTED, ADD SUPPORT LINKS -------->
+    {{- partial "misc/support.html" . -}}
+
   </body>
 </html>

+ 6 - 10
layouts/index.html

@@ -29,16 +29,8 @@
     <!--================= custom style overrides =========================-->
     <link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
     
-    <!-- Add Google Analytics if enabled in configuration -->
-    {{ if site.GoogleAnalytics }}
-        <!-- Google Analytics v3  ID -->
-        {{ if hasPrefix site.GoogleAnalytics "UA-"}}
-          {{ template "_internal/google_analytics_async.html" . }}
-        {{ else }}
-          <!-- Google Analytics v4  ID -->
-          {{ template "_internal/google_analytics.html" . }}
-        {{ end }}
-    {{ end }}
+    <!--================= add analytics if enabled =========================-->
+    {{- partial "analytics.html" . -}}
   </head>
   <body data-spy="scroll" data-target="#top-navbar" data-offset="100">
 
@@ -87,5 +79,9 @@
     <script src="{{ "/js/github-button.js" | relURL }}"></script>
     <script src="{{ "/js/home.js" | relURL }}"></script>
     <script src="{{ "/js/jquery.filterizr.min.js" | relURL }}"></script>
+
+    <!------ ADD SUPPORT LINKS -------->
+    {{- partial "misc/support.html" . -}}
+
   </body>
 </html>

+ 46 - 0
layouts/partials/analytics.html

@@ -0,0 +1,46 @@
+<!-- Add Analytics if enabled in configuration -->
+{{ with site.Params.features.analytics }}
+    {{ if .enabled }}
+        <!-- Google Analytics -->
+        {{ with .google }}
+            {{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
+            {{ $analyticsConfig := dict (slice "Site" "GoogleAnalytics") .id }}
+            {{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
+        {{ end }}
+
+        <!-- Counter.dev -->
+        {{ with .counterDev }}
+            <script>
+            if (
+                !sessionStorage.getItem("_swa") &&
+                document.referrer.indexOf(location.protocol + "//" + location.host) !== 0
+            ) {
+                fetch(
+                "https://counter.dev/track?" +
+                    new URLSearchParams({
+                    referrer: document.referrer,
+                    screen: screen.width + "x" + screen.height,
+                    user: "{{ .id }}",
+                    utcoffset: "1",
+                    })
+                );
+            }
+            sessionStorage.setItem("_swa", "1");
+            </script>
+        {{ end }}
+
+        <!-- GoatCounter -->
+        {{ with .goatCounter }}
+            <script
+            data-goatcounter="https://{{ .code }}.goatcounter.com/count"
+            async
+            src="//gc.zgo.at/count.js"
+            ></script>
+        {{ end }}
+    {{ end }}
+{{ end }}
+
+<!-- Keep backwards compatibility and consistency with HUGO defaults -->
+{{ if site.GoogleAnalytics }}
+    {{ template "_internal/google_analytics.html" . }}
+{{ end }}

+ 4 - 3
layouts/partials/header.html

@@ -8,11 +8,12 @@
 <link rel="stylesheet" href="{{ "/css/navigators/navbar.css" | relURL }}"/>
 <link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
 <link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
-<link rel="stylesheet" href="{{ "/css/katex.min.css" | relURL }}">
 
-<!--=================== cdn ==============================-->
+<!--=================== fonts ==============================-->
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600">
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" />
+
+<!--=================== icons ==============================-->
+<link rel="stylesheet" href="{{ "/fontawesome/css/all.min.css" | relURL }}"/>
 
 <!--================= fab-icon =========================-->
 {{/* add favicon only if the site author has provided the the favicon */}}

+ 14 - 4
layouts/partials/math.html

@@ -1,5 +1,15 @@
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
-    onload="renderMathInElement(document.body);">
+<link rel="stylesheet" href="{{ "/katex/katex.min.css" | relURL }}">
+<script type="text/javascript" defer src="{{ "/katex/katex.min.js" | relURL }}"></script>
+<script type="text/javascript" defer src="{{ "/katex/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);">
+    renderMathInElement(
+        document.body,
+        {
+            delimiters: [
+                {left: "$$", right: "$$", display: true},
+                {left: "\\[", right: "\\]", display: true},
+                {left: "$", right: "$", display: false},
+                {left: "\\(", right: "\\)", display: false}
+            ]
+        }
+    );
 </script>

+ 16 - 0
layouts/partials/misc/support.html

@@ -0,0 +1,16 @@
+{{ with site.Params.features.support }}
+    {{ if .enabled }}
+        <!-- Enable Ko-Fi floating button -->
+        {{ with .kofi }}
+            <script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
+            <script>
+            kofiWidgetOverlay.draw('{{ .user }}', {
+                'type': 'floating-chat',
+                'floating-chat.donateButton.text': '{{ .text }}',
+                'floating-chat.donateButton.text-color': '{{ .textColor }}',
+                'floating-chat.donateButton.background-color': '{{ .backgroundColor }}',
+            });
+            </script>
+        {{ end }}
+    {{ end }}
+{{ end }}

+ 0 - 3
layouts/partials/scripts.html

@@ -5,6 +5,3 @@
 <script type="text/javascript" src="{{ "/js/navbar.js" | relURL }}"></script>
 <script type="text/javascript" src="{{ "/js/plyr.js" | relURL }}"></script>
 <script type="text/javascript" src="{{ "/js/main.js" | relURL }}"></script>
-
-<script type="text/javascript" defer src="{{ "/js/katex.min.js" | relURL }}"></script>
-<script type="text/javascript" defer src="{{ "/js/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);"></script>

文件差异内容过多而无法显示
+ 5 - 0
static/fontawesome/css/all.min.css


二进制
static/fontawesome/webfonts/fa-brands-400.ttf


二进制
static/fontawesome/webfonts/fa-brands-400.woff2


二进制
static/fontawesome/webfonts/fa-regular-400.ttf


二进制
static/fontawesome/webfonts/fa-regular-400.woff2


二进制
static/fontawesome/webfonts/fa-solid-900.ttf


二进制
static/fontawesome/webfonts/fa-solid-900.woff2


二进制
static/fontawesome/webfonts/fa-v4compatibility.ttf


二进制
static/fontawesome/webfonts/fa-v4compatibility.woff2


文件差异内容过多而无法显示
+ 0 - 0
static/js/katex.min.js


+ 0 - 0
static/js/auto-render.min.js → static/katex/auto-render.min.js


二进制
static/katex/fonts/KaTeX_AMS-Regular.ttf


二进制
static/katex/fonts/KaTeX_AMS-Regular.woff


二进制
static/katex/fonts/KaTeX_AMS-Regular.woff2


二进制
static/katex/fonts/KaTeX_Caligraphic-Bold.ttf


二进制
static/katex/fonts/KaTeX_Caligraphic-Bold.woff


二进制
static/katex/fonts/KaTeX_Caligraphic-Bold.woff2


二进制
static/katex/fonts/KaTeX_Caligraphic-Regular.ttf


二进制
static/katex/fonts/KaTeX_Caligraphic-Regular.woff


二进制
static/katex/fonts/KaTeX_Caligraphic-Regular.woff2


二进制
static/katex/fonts/KaTeX_Fraktur-Bold.ttf


二进制
static/katex/fonts/KaTeX_Fraktur-Bold.woff


二进制
static/katex/fonts/KaTeX_Fraktur-Bold.woff2


二进制
static/katex/fonts/KaTeX_Fraktur-Regular.ttf


二进制
static/katex/fonts/KaTeX_Fraktur-Regular.woff


二进制
static/katex/fonts/KaTeX_Fraktur-Regular.woff2


二进制
static/katex/fonts/KaTeX_Main-Bold.ttf


二进制
static/katex/fonts/KaTeX_Main-Bold.woff


二进制
static/katex/fonts/KaTeX_Main-Bold.woff2


二进制
static/katex/fonts/KaTeX_Main-BoldItalic.ttf


二进制
static/katex/fonts/KaTeX_Main-BoldItalic.woff


二进制
static/katex/fonts/KaTeX_Main-BoldItalic.woff2


二进制
static/katex/fonts/KaTeX_Main-Italic.ttf


二进制
static/katex/fonts/KaTeX_Main-Italic.woff


二进制
static/katex/fonts/KaTeX_Main-Italic.woff2


二进制
static/katex/fonts/KaTeX_Main-Regular.ttf


二进制
static/katex/fonts/KaTeX_Main-Regular.woff


二进制
static/katex/fonts/KaTeX_Main-Regular.woff2


二进制
static/katex/fonts/KaTeX_Math-BoldItalic.ttf


二进制
static/katex/fonts/KaTeX_Math-BoldItalic.woff


二进制
static/katex/fonts/KaTeX_Math-BoldItalic.woff2


二进制
static/katex/fonts/KaTeX_Math-Italic.ttf


二进制
static/katex/fonts/KaTeX_Math-Italic.woff


二进制
static/katex/fonts/KaTeX_Math-Italic.woff2


二进制
static/katex/fonts/KaTeX_SansSerif-Bold.ttf


二进制
static/katex/fonts/KaTeX_SansSerif-Bold.woff


二进制
static/katex/fonts/KaTeX_SansSerif-Bold.woff2


二进制
static/katex/fonts/KaTeX_SansSerif-Italic.ttf


二进制
static/katex/fonts/KaTeX_SansSerif-Italic.woff


二进制
static/katex/fonts/KaTeX_SansSerif-Italic.woff2


二进制
static/katex/fonts/KaTeX_SansSerif-Regular.ttf


二进制
static/katex/fonts/KaTeX_SansSerif-Regular.woff


二进制
static/katex/fonts/KaTeX_SansSerif-Regular.woff2


二进制
static/katex/fonts/KaTeX_Script-Regular.ttf


二进制
static/katex/fonts/KaTeX_Script-Regular.woff


二进制
static/katex/fonts/KaTeX_Script-Regular.woff2


二进制
static/katex/fonts/KaTeX_Size1-Regular.ttf


二进制
static/katex/fonts/KaTeX_Size1-Regular.woff


二进制
static/katex/fonts/KaTeX_Size1-Regular.woff2


二进制
static/katex/fonts/KaTeX_Size2-Regular.ttf


二进制
static/katex/fonts/KaTeX_Size2-Regular.woff


二进制
static/katex/fonts/KaTeX_Size2-Regular.woff2


二进制
static/katex/fonts/KaTeX_Size3-Regular.ttf


二进制
static/katex/fonts/KaTeX_Size3-Regular.woff


二进制
static/katex/fonts/KaTeX_Size3-Regular.woff2


二进制
static/katex/fonts/KaTeX_Size4-Regular.ttf


二进制
static/katex/fonts/KaTeX_Size4-Regular.woff


二进制
static/katex/fonts/KaTeX_Size4-Regular.woff2


二进制
static/katex/fonts/KaTeX_Typewriter-Regular.ttf


二进制
static/katex/fonts/KaTeX_Typewriter-Regular.woff


二进制
static/katex/fonts/KaTeX_Typewriter-Regular.woff2


文件差异内容过多而无法显示
+ 0 - 0
static/katex/katex.min.css


文件差异内容过多而无法显示
+ 0 - 0
static/katex/katex.min.js


部分文件因为文件数量过多而无法显示