Kaynağa Gözat

Update scripts.html

zzossig 5 yıl önce
ebeveyn
işleme
b9b1be1a78
1 değiştirilmiş dosya ile 48 ekleme ve 4 silme
  1. 48 4
      layouts/partials/head/scripts.html

+ 48 - 4
layouts/partials/head/scripts.html

@@ -12,9 +12,6 @@
 <script>
   "use strict";
 
-  {{ $permalink := .Permalink }}
-  var permalink = JSON.parse({{ $permalink | jsonify }});
-
   window.onload = function() {
     // ========================== expand ==========================
     var expandBtn = document.querySelectorAll('.expand__button');
@@ -303,6 +300,44 @@
 
 
   // ========================== search ==========================
+    var baseurl = null;
+    {{ $siteBaseURL:= .Site.BaseURL }}
+    var siteBaseURL = JSON.parse({{ $siteBaseURL | jsonify }});
+    var siteBaseChecker = /\/\w+\//i;
+    var isSlug = siteBaseChecker.test(siteBaseURL);
+    var isThemeSite = location.origin.includes('themes.gohugo.io');
+
+    {{ if .Site.IsMultiLingual }}
+        if (isThemeSite) {
+          baseurl = "{{.Site.BaseURL}}{{.Site.LanguagePrefix}}";
+        } else {
+          var hasLangPostfix = location.pathname.includes("/{{.Site.Language.Lang}}");
+          if (hasLangPostfix) {
+            if (isSlug) {
+              baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0] + "{{.Site.Language.Lang}}";
+            } else {
+              baseurl = location.origin + "/{{.Site.Language.Lang}}";
+            }
+          } else {
+            if (isSlug) {
+              baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0];
+            } else {
+              baseurl = location.origin;
+            }
+          }
+        }
+    {{ else }}
+        if (isThemeSite) {
+          baseurl = "{{.Site.BaseURL}}";
+        } else {
+          if (isSlug) {
+            baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0];
+          } else {
+            baseurl = location.origin;
+          } 
+        }
+    {{ end }}
+
     var searchResults = null;
     var searchMenu = null;
     var searchText = null;
@@ -311,9 +346,18 @@
     var enableSearchHighlight = JSON.parse({{ $enableSearchHighlight | jsonify }});
 
     var fuse = null;
+
+    function endsWith(str, suffix) {
+      return str.indexOf(suffix, str.length - suffix.length) !== -1;
+    }
+
     function initFuse() {
+      if (!endsWith(baseurl, "/")) {
+        baseurl = baseurl + '/';
+      };
+
       var xhr = new XMLHttpRequest();
-      xhr.open('GET', permalink + "index.json");
+      xhr.open('GET', baseurl + "index.json");
       xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
       xhr.onload = function () {
         if (xhr.status === 200) {