블로그에 글이 점점 많아지면서 내 자신도 내 글을 찾기가 점점 힘들어지고 있다는걸 깨달았습니다.
페이징을 하나하나 넘겨가면서 내 글을 찾아서 보는것이 상당히 비효율적입니다.
제 블로그에서 정보를 찾으시는 분들도 관련 글을 찾고 싶을 수도 있다는 생각에 검색 기능을 추가 하게 되었습니다.
참고 사이트
root 경로(최상위 경로)에 search.json 를 만들고 소스 입력.
root 경로는 github.io로 끝나는 디렉토리를 말합니다.
jekyll 블로그게 만들어져 있다면 _config.yml 가 위치한 경로를 말합니다.
---
layout: null
---
[
{% for post in site.posts %}
{
"title" : "{{ post.title | escape }}",
"category" : "{{ post.category }}",
"tags" : "{{ post.tags | join: ', ' }}",
"url" : "{{ site.baseurl }}{{ post.url }}",
"date" : "{{ post.date }}"
} {% unless forloop.last %},{% endunless %}
{% endfor %}
]
module Jekyll
module CharFilter
def remove_chars(input)
input.gsub! '\\','\'
input.gsub! /\t/, ' '
input.strip_control_and_extended_characters
end
end
end
Liquid::Template.register_filter(Jekyll::CharFilter)
class String
def strip_control_and_extended_characters()
chars.each_with_object("") do |char, str|
str << char if char.ascii_only? and char.ord.between?(32,126)
end
end
end
---
layout: search
page_title: Search
permalink: /search/
---
<div class="container">
<div class="row">
<div class="col-12">
<div id="search-bar">
<i class="fa fa-search" aria-hidden="true"></i>
<input id="search-input" type="text" placeholder="Search..." />
</div>
<ul id="results-container"></ul>
</div>
</div>
</div>
<!-- Script pointing to jekyll-search.js -->
<script src="/assets/js/jekyll-search.js" type="text/javascript"></script>
<script type="text/javascript">
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
json: '/search.json',
searchResultTemplate: '<li><a href="{url}" title="{desc}" target="_blank">{title}</a></li>',
noResultsText: 'No results found',
limit: 10000,
fuzzy: false,
exclude: ['Welcome']
});
</script>
<!DOCTYPE html>
<html>
<body>
<div id="wrap">
<!-- Main content -->
<div class="main-layout">
<div id="container-search">
<main>
{{ content }}
</main>
</div>
</div>
</div>
</body>
</html>
#search-bar {
margin: 32px auto;
border: 1px solid #ccc;
border-radius: 20px;
padding: 0 20px;
& #search-input {
width: calc(100% - 30px);
border: none;
line-height: 44px;
outline: none;
}
}
#search-bar {
margin: 32px auto;
border: 1px solid #ccc;
border-radius: 20px;
padding: 0 20px;
}
#search-bar #search-input {
width: calc(100% - 30px);
border: none;
line-height: 44px;
outline: none;
border-style: none;
}
http://127.0.0.1:4000/search/