Add Algolia search provider (#1531)
* Support Lunr and Algolia search providers * Document search providers and configuration * Update CHANGELOG and history close #1416
This commit is contained in:
@ -13,16 +13,13 @@
|
||||
{% endif %}
|
||||
|
||||
{% if site.search == true or page.layout == "search" %}
|
||||
{% assign lang = site.locale | slice: 0,2 | default: "en" %}
|
||||
{% case lang %}
|
||||
{% when "gr" %}
|
||||
{% assign lang = "gr" %}
|
||||
{% else %}
|
||||
{% assign lang = "en" %}
|
||||
{% endcase %}
|
||||
<script src="{{ '/assets/js/lunr/lunr.min.js' | absolute_url }}"></script>
|
||||
<script src="{{ '/assets/js/lunr/lunr-store.js' | absolute_url }}"></script>
|
||||
<script src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | absolute_url }}"></script>
|
||||
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||
{%- case search_provider -%}
|
||||
{%- when "lunr" -%}
|
||||
{% include search/lunr-search-scripts.html %}
|
||||
{%- when "algolia" -%}
|
||||
{% include search/algolia-search-scripts.html %}
|
||||
{%- endcase -%}
|
||||
{% endif %}
|
||||
|
||||
{% include analytics.html %}
|
||||
|
54
_includes/search/algolia-search-scripts.html
Normal file
54
_includes/search/algolia-search-scripts.html
Normal file
@ -0,0 +1,54 @@
|
||||
<!-- Including InstantSearch.js library and styling -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
|
||||
|
||||
<script>
|
||||
// Instanciating InstantSearch.js with Algolia credentials
|
||||
const search = instantsearch({
|
||||
appId: '{{ site.algolia.application_id }}',
|
||||
apiKey: '{{ site.algolia.search_only_api_key }}',
|
||||
indexName: '{{ site.algolia.index_name }}',
|
||||
searchParameters: {
|
||||
restrictSearchableAttributes: [
|
||||
'title',
|
||||
'content'
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
const hitTemplate = function(hit) {
|
||||
const url = hit.url;
|
||||
const title = hit._highlightResult.title.value;
|
||||
const content = hit._highlightResult.html.value;
|
||||
|
||||
return `
|
||||
<div class="list__item">
|
||||
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
||||
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
||||
</article>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
// Adding searchbar and results widgets
|
||||
search.addWidget(
|
||||
instantsearch.widgets.searchBox({
|
||||
container: '.search-searchbar',
|
||||
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
||||
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
||||
})
|
||||
);
|
||||
search.addWidget(
|
||||
instantsearch.widgets.hits({
|
||||
container: '.search-hits',
|
||||
templates: {
|
||||
item: hitTemplate
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
// Starting the search
|
||||
search.start();
|
||||
</script>
|
10
_includes/search/lunr-search-scripts.html
Normal file
10
_includes/search/lunr-search-scripts.html
Normal file
@ -0,0 +1,10 @@
|
||||
{% assign lang = site.locale | slice: 0,2 | default: "en" %}
|
||||
{% case lang %}
|
||||
{% when "gr" %}
|
||||
{% assign lang = "gr" %}
|
||||
{% else %}
|
||||
{% assign lang = "en" %}
|
||||
{% endcase %}
|
||||
<script src="{{ '/assets/js/lunr/lunr.min.js' | absolute_url }}"></script>
|
||||
<script src="{{ '/assets/js/lunr/lunr-store.js' | absolute_url }}"></script>
|
||||
<script src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | absolute_url }}"></script>
|
11
_includes/search/search_form.html
Normal file
11
_includes/search/search_form.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="search-content__inner-wrap">
|
||||
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||
{%- case search_provider -%}
|
||||
{%- when "lunr" -%}
|
||||
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<div id="results" class="results"></div>
|
||||
{%- when "algolia" -%}
|
||||
<div class="search-searchbar"></div>
|
||||
<div class="search-hits"></div>
|
||||
{%- endcase -%}
|
||||
</div>
|
@ -1,4 +0,0 @@
|
||||
<div class="search-content__inner-wrap">
|
||||
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<div id="results" class="results"></div>
|
||||
</div>
|
Reference in New Issue
Block a user