Added Lunr.js site search, fixed errors with jekyll serve
This commit is contained in:
parent
578e58ccff
commit
3b27f2c01e
7 changed files with 3075 additions and 10 deletions
71
docs/_includes/search-lunr.html
Normal file
71
docs/_includes/search-lunr.html
Normal file
|
@ -0,0 +1,71 @@
|
|||
<script src="/lunr.js"></script>
|
||||
|
||||
<script>
|
||||
{% assign counter = 0 %}
|
||||
var documents = [{% for page in site.pages %}{% if page.url contains '.xml' or page.url contains 'assets' %}{% else %}{
|
||||
"id": {{ counter }},
|
||||
"url": "{{ site.url }}{{ page.url }}",
|
||||
"title": "{{ page.title }}",
|
||||
"body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '</h2>', ': ' | replace: '</h3>', ': ' | replace: '</h4>', ': ' | replace: '</p>', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %}
|
||||
}, {% endif %}{% endfor %}{% for page in site.without-plugin %}{
|
||||
"id": {{ counter }},
|
||||
"url": "{{ site.url }}{{ page.url }}",
|
||||
"title": "{{ page.title }}",
|
||||
"body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '</h2>', ': ' | replace: '</h3>', ': ' | replace: '</h4>', ': ' | replace: '</p>', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %}
|
||||
}, {% endfor %}{% for page in site.docs %}{
|
||||
"id": {{ counter }},
|
||||
"url": "{{ site.url }}{{ page.url }}",
|
||||
"title": "{{ page.title }}",
|
||||
"body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '</h2>', ': ' | replace: '</h3>', ': ' | replace: '</h4>', ': ' | replace: '</p>', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %}
|
||||
}{% if forloop.last %}{% else %}, {% endif %}{% endfor %}];
|
||||
|
||||
var idx = lunr(function () {
|
||||
this.ref('id')
|
||||
this.field('title')
|
||||
this.field('body')
|
||||
|
||||
documents.forEach(function (doc) {
|
||||
this.add(doc)
|
||||
}, this)
|
||||
});
|
||||
function lunr_search(term) {
|
||||
document.getElementById('lunrsearchresults').innerHTML = '<ul></ul>';
|
||||
if(term) {
|
||||
document.getElementById('lunrsearchresults').innerHTML = "<p>Search results for '" + term + "'</p>" + document.getElementById('lunrsearchresults').innerHTML;
|
||||
//put results on the screen.
|
||||
var results = idx.search(term);
|
||||
if(results.length>0){
|
||||
//console.log(idx.search(term));
|
||||
//if results
|
||||
for (var i = 0; i < results.length; i++) {
|
||||
// more statements
|
||||
var ref = results[i]['ref'];
|
||||
var url = documents[ref]['url'];
|
||||
var title = documents[ref]['title'];
|
||||
var body = documents[ref]['body'].substring(0,160)+'...';
|
||||
document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML + "<li class='lunrsearchresult mb-2'><a href='" + url + "'><span class='title'>" + title + "</span><br /><span class='body'>"+ body +"</span><br /><span class='url'>"+ url +"</span></a></li>";
|
||||
}
|
||||
} else {
|
||||
document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = "<li class='lunrsearchresult'>No results found...</li>";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
#lunrsearchresults {padding-top: 0.2rem;}
|
||||
.lunrsearchresult {padding-bottom: 1rem;}
|
||||
.lunrsearchresult .title {color: #f05f40;}
|
||||
.lunrsearchresult .url {color: gray;}
|
||||
.lunrsearchresult a {display: block; color: black;}
|
||||
.lunrsearchresult a:hover, .lunrsearchresult a:focus {text-decoration: none;}
|
||||
.lunrsearchresult a:hover .title {text-decoration: underline;}
|
||||
</style>
|
||||
|
||||
|
||||
<form onSubmit="return lunr_search(document.getElementById('lunrsearch').value);">
|
||||
<p><input type="text" class="form-control" id="lunrsearch" name="q" maxlength="255" value="" placeholder="Search via Lunr.js" /></p>
|
||||
</form>
|
||||
<div id="lunrsearchresults">
|
||||
<ul class="list-line mb-0"></ul>
|
||||
</div>
|
Loading…
Add table
Add a link
Reference in a new issue