45 lines
1.4 KiB
HTML
45 lines
1.4 KiB
HTML
{{ define "main" }}
|
|
<noscript>
|
|
You need to enable JavaScript to be able to search.
|
|
</noscript>
|
|
{{- partial "searchbar.html" . -}}
|
|
<div class="postlist {{ if .Site.Params.gridView }}gridView{{ end }}" id="postlist">
|
|
</div>
|
|
{{- partial "js_paginator.html" . -}}
|
|
<script>
|
|
function matchTags(page, term) {
|
|
for (let tag of page.tags) {
|
|
if (tag.includes(term)) return true;
|
|
}
|
|
return false;
|
|
}
|
|
function performSearch(term) {
|
|
document.getElementById('postlist').innerHTML = '';
|
|
term = term.toLowerCase();
|
|
fetch('/search/index.json').then(res => res.json())
|
|
.then(res => {
|
|
let articles = res.pages.filter(page => (
|
|
page.title.toLowerCase().includes(term) ||
|
|
matchTags(page, term) ||
|
|
page.text.includes(term)
|
|
));
|
|
if (articles.length > 0) renderArticles(articles);
|
|
else document.getElementById('postlist').innerHTML = `
|
|
<h3>No results found</h3>
|
|
`;
|
|
});
|
|
}
|
|
var url = location.href;
|
|
var baseUrl = url.split('?')[0];
|
|
var searchbar = document.getElementById('searchbar');
|
|
if (url.includes('?')) {
|
|
var urlParams = new URLSearchParams(url.split('?')[1]);
|
|
if (urlParams.has('q')) {
|
|
let searchTerm = urlParams.get('q');
|
|
searchbar.value = searchTerm;
|
|
performSearch(searchTerm);
|
|
}
|
|
}
|
|
</script>
|
|
{{ end }}
|