From 3e3132d9eb90732945d8d22700223470d1d361ca Mon Sep 17 00:00:00 2001 From: j m <1406993111@qq.com> Date: Sun, 4 Aug 2024 06:49:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=90=9C=E7=B4=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- settings.yaml | 2 +- src/css/style.less | 3 +- src/js/search.js | 91 ++++++++++++++++++++++++++++++ templates/assets/css/style.min.css | 2 +- templates/assets/js/search.min.js | 1 + templates/common/config.html | 1 + templates/search.html | 48 ++-------------- theme.yaml | 2 +- 8 files changed, 104 insertions(+), 46 deletions(-) create mode 100644 src/js/search.js create mode 100644 templates/assets/js/search.min.js diff --git a/settings.yaml b/settings.yaml index 80aa426..2cd906b 100644 --- a/settings.yaml +++ b/settings.yaml @@ -1101,7 +1101,7 @@ spec: label: 关闭 - $formkit: group name: search - label: 搜索 + label: 搜索页面 help: 使用新版搜索需要 halo >= 2.17.0 & 搜索插件 >= 1.5.0。 value: search_enable: false diff --git a/src/css/style.less b/src/css/style.less index b66f9b2..bdf5ca1 100644 --- a/src/css/style.less +++ b/src/css/style.less @@ -5227,6 +5227,7 @@ button.swiper-pagination-bullet { /* 搜索界面 */ .search { + margin-top: 1.4rem !important; .search-form-inner { width: 100%; @@ -5292,7 +5293,7 @@ button.swiper-pagination-bullet { display: inline-block; } - b { + b, mark { color: var(--light-z); background: var(--theme); } diff --git a/src/js/search.js b/src/js/search.js new file mode 100644 index 0000000..ba96452 --- /dev/null +++ b/src/js/search.js @@ -0,0 +1,91 @@ +$(function () { + var searchForm = document.getElementById('dream-search-form') + var target = DreamConfig.search_target + var searchInput = document.getElementById('halo-search-form-text-input') + var searchResult = $('#dream-search-result') + var searchResultEmpty = $('#dream-search-result-empty') + searchForm.addEventListener('submit', function (event) { + event.preventDefault() + findResult(searchInput.value) + }) + document.addEventListener('keydown', function (event) { + if (event.key === 'Enter') { + if (searchForm.contains(document.activeElement)) { + event.preventDefault() + findResult(searchInput.value) + } + } + }) + // 监听输入事件 + searchInput.addEventListener('input', function (event) { + findResult(event.target.value) + }) + + function removeHTMLTags(str) { + // 保留 标签,移除其他所有标签 + return str.replace(/<(?!(?:mark\b[^<>]*)<\/mark>|mark\b)[^<>]*>/gi, '') + } + + function findResult(keyword) { + if (!keyword) { + searchResult.empty() + searchResultEmpty.show() + return + } + Utils.request({ + url: '/apis/api.halo.run/v1alpha1/indices/post', + contentType: 'application/json;charset=UTF-8', + returnRaw: true, + data: { + keyword, + limit: $('#halo-search-form-limit').val(), + highlightPreTag: '', + highlightPostTag: '' + } + }) + .then((_res) => { + console.log(_res) + if (_res.hits.length > 0) { + searchResultEmpty.hide() + searchResult.empty() + for (var i = 0; i < _res.hits.length; i++) { + var hit = _res.hits[i] + searchResult.append(' -