更新搜索框

main
JiXieShi 2024-03-28 17:32:11 +08:00
parent 6e70a1d4df
commit 9c0d18a6d0
4 changed files with 38 additions and 38 deletions

View File

@ -14,6 +14,6 @@
"documentGitUrl": "https://github.com/jixishi/blog_docs.git", "documentGitUrl": "https://github.com/jixishi/blog_docs.git",
"themePath": "/blog", "themePath": "/blog",
"themeColor": "#2196f3", "themeColor": "#2196f3",
"dashboard": "adminjxs", "dashboard": "/adminjxs",
"themeOption": ["#673ab7","#f44336","#9c27b0","#2196f3","#607d8b","#795548"] "themeOption": ["#673ab7","#f44336","#9c27b0","#2196f3","#607d8b","#795548"]
} }

View File

@ -24,7 +24,6 @@ func Index(w http.ResponseWriter, r *http.Request) {
search := r.Form.Get("search") search := r.Form.Get("search")
category := r.Form.Get("category") category := r.Form.Get("category")
tag := r.Form.Get("tag") tag := r.Form.Get("tag")
if search != "" || category != "" || tag != "" { if search != "" || category != "" || tag != "" {
articles = models.ArticleSearch(&articles, search, category, tag) articles = models.ArticleSearch(&articles, search, category, tag)
} }

View File

@ -3,7 +3,7 @@
<div class="footer"> <div class="footer">
<span>{{ .Config.Icp }}</span><span class="footer-divider"> | </span> <span>{{ .Config.Icp }}</span><span class="footer-divider"> | </span>
<span> <span>
© 2018 - 2022 {{ .Config.Author }} © 2018 - <script>document.write(new Date().getFullYear())</script> {{ .Config.Author }}
Powered By <a href="{{ .Config.AppRepository }}" target="_blank"> {{ .Config.AppName }} </a> Powered By <a href="{{ .Config.AppRepository }}" target="_blank"> {{ .Config.AppName }} </a>
</span> </span>
<span id="busuanzi_container_site_pv" style='display:none'> <span id="busuanzi_container_site_pv" style='display:none'>

View File

@ -1,69 +1,70 @@
{{define "header"}} {{define "header"}}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-cn"> <html lang="zh-cn">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="public/img/favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="public/img/favicon.ico" type="image/x-icon">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="Keywords" content="{{ .Config.HtmlKeywords }}"/> <meta name="Keywords" content="{{ .Config.HtmlKeywords }}" />
<meta name="description" content="{{ .Config.HtmlDescription }}"/> <meta name="description" content="{{ .Config.HtmlDescription }}" />
<title>{{ .Title }} - {{ .Config.SiteName }}</title> <title>{{ .Title }} - {{ .Config.SiteName }}</title>
<style> <style>:root{--primary: {{ .Config.ThemeColor }}}</style>
:root {
--primary: {
{
.Config.ThemeColor
}
}
}
</style>
<link rel="stylesheet" href="/public/css/app.css"> <link rel="stylesheet" href="/public/css/app.css">
<link href="/public/css/prism.css" rel="stylesheet"/> <link href="/public/css/prism.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css">
<script src="/public/js/marked.min.js"></script> <script src="/public/js/marked.min.js"></script>
<script async src="https://umami.starss.cc/script.js" data-website-id="594ff1a5-e8ce-47b1-8558-88cb3f9d7704"></script>
<script async src="https://busuanzi.icodeq.com/busuanzi.pure.mini.js"></script> <script async src="https://busuanzi.icodeq.com/busuanzi.pure.mini.js"></script>
<script> <script>
function obj2StrParams(obj, firstStr = '?') { function obj2StrParams(obj,firstStr = '?') {
let params = firstStr; let params = firstStr;
for (let p in obj) { for (let p in obj){
let isFirst = (params === '?'); let isFirst = ( params === '?');
let qz = isFirst ? '' : (params === '&' ? '' : '&'); let qz = isFirst ? '' : (params === '&' ? '' : '&');
params += (qz + p + '=' + obj[p]) params += (qz + p + '=' + obj[p] )
} }
return params return params
} }
function currentUrlToParams(key = null) { function currentUrlToParams(key = null) {
let paramsUrl = (window.location.href).split('?'); let paramsUrl = (window.location.href).split('?');
if (paramsUrl.length < 2) return key ? null : {}; if(paramsUrl.length<2)return key ? null : {};
let paramsArr = paramsUrl[1].split('&'); let paramsArr = paramsUrl[1].split('&');
let paramsData = {} let paramsData = {}
paramsArr.forEach(r => { paramsArr.forEach(r=>{
let data = r.split('=') let data = r.split('=')
paramsData[data[0]] = data[1] paramsData[data[0]] = data[1]
}) })
if (key) return paramsData.hasOwnProperty(key) ? paramsData[key] : null; if(key)return paramsData.hasOwnProperty(key) ? paramsData[key] : null;
return paramsData; return paramsData;
} }
function searchArticle() {
var searchKey = document.getElementById('search-input').value;
searchKey = searchKey.replace(/^\s+|\s+$/g,"")
if("" === searchKey){return}
window.location.href = '/?search=' + searchKey
}
</script> </script>
</head> </head>
<body class="theme{{ .Config.ThemeColor }}"> <body class="theme{{ .Config.ThemeColor }}">
<nav class="head"> <nav class="head">
<div class="container head-content"> <div class="container head-content">
<div class="logo">{{ .Config.SiteName }}</div> <div class="logo">{{ .Config.SiteName }}</div>
<div class="nav"> <div class="search-box">
<a href="/blog">Blog</a> <input id="search-input" class="search-input" type="text" placeholder="搜索...">
<a href="/categories">Categories</a> <img onclick="searchArticle()" class="search-icon" src="/public/img/search.svg" alt="">
{{range $nav := .Navs }}
<a href="/extra-nav?name={{ $nav.Title }}">{{ $nav.Title }}</a>
{{end}}
</div>
</div> </div>
</nav> <div class="nav">
<div class="post-warp"> <a href="/blog">Blog</a>
{{ end }} <a href="/categories">Categories</a>
{{range $nav := .Navs }}
<a href="/extra-nav?name={{ $nav.Title }}">{{ $nav.Title }}</a>
{{end}}
</div>
</div>
</nav>
<div class="post-warp">
{{ end }}