mirror of
https://github.com/hugo-fixit/FixIt.git
synced 2026-08-24 15:28:57 +00:00
✨ Feat: add Google CSE support
This commit is contained in:
+37
-13
@@ -159,8 +159,10 @@ class FixIt {
|
||||
document.body.classList.add('blur');
|
||||
$header.classList.add('open');
|
||||
$searchInput.focus();
|
||||
this.disableScrollEvent = true;
|
||||
}, false);
|
||||
$searchClear.addEventListener('click', () => {
|
||||
this.disableScrollEvent = false;
|
||||
$searchClear.style.display = 'none';
|
||||
this._searchDesktop && this._searchDesktop.autocomplete.setVal('');
|
||||
}, false);
|
||||
@@ -289,25 +291,47 @@ class FixIt {
|
||||
finish([]);
|
||||
});
|
||||
} else finish(search());
|
||||
}
|
||||
} else if (searchConfig.type === 'cse') {
|
||||
const cseConfig = this.config.cse;
|
||||
if (cseConfig.engine === 'google' && cseConfig.cx) {
|
||||
finish([{
|
||||
uri: `${cseConfig.resultsPage}#gsc.tab=0&gsc.q=${encodeURIComponent(query)}`,
|
||||
title: cseConfig.searchIn,
|
||||
date: '<i class="fa-brands fa-searchengin fa-xl" aria-hidden="true"></i>',
|
||||
context: cseConfig.gotoResultsPage
|
||||
}]);
|
||||
}
|
||||
}
|
||||
},
|
||||
templates: {
|
||||
suggestion: ({ title, date, context }) =>
|
||||
`<div><span class="suggestion-title">${title}</span><span class="suggestion-date">${date}</span></div><div class="suggestion-context">${context}</div>`,
|
||||
empty: ({ query }) => `<div class="search-empty">${searchConfig.noResultsFound}: <span class="search-query">"${query}"</span></div>`,
|
||||
footer: ({}) => {
|
||||
const { searchType, icon, href } =
|
||||
searchConfig.type === 'algolia'
|
||||
? {
|
||||
searchType: 'algolia',
|
||||
icon: '<i class="fa-brands fa-algolia fa-fw" aria-hidden="true"></i>',
|
||||
href: 'https://www.algolia.com/'
|
||||
}
|
||||
: {
|
||||
searchType: 'Fuse.js',
|
||||
icon: '',
|
||||
href: 'https://fusejs.io/'
|
||||
}
|
||||
let searchType, icon, href;
|
||||
switch (searchConfig.type) {
|
||||
case 'algolia':
|
||||
searchType = 'algolia';
|
||||
icon = '<i class="fa-brands fa-algolia fa-fw" aria-hidden="true"></i>';
|
||||
href = 'https://www.algolia.com/';
|
||||
break;
|
||||
case 'fuse':
|
||||
searchType = 'Fuse.js';
|
||||
icon = '';
|
||||
href = 'https://fusejs.io/';
|
||||
break;
|
||||
case 'cse':
|
||||
if (this.config.cse.engine === 'google') {
|
||||
searchType = 'Google CSE';
|
||||
icon = '<i class="fa-brands fa-google fa-fw" aria-hidden="true"></i>';
|
||||
href = 'https://programmablesearchengine.google.com/';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
searchType = '';
|
||||
icon = '';
|
||||
href = '';
|
||||
}
|
||||
return `<div class="search-footer">Search by <a href="${href}" rel="noopener noreferrer" target="_blank">${icon} ${searchType}</a></div>`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,14 +418,19 @@ enableEmoji = true
|
||||
ignoreLocation = false
|
||||
useExtendedSearch = false
|
||||
ignoreFieldNorm = false
|
||||
# FixIt 0.3.16 | NEW Custom Search Engine (CSE)
|
||||
[params.search.cse]
|
||||
# CSE engine: ["google", "bing"]
|
||||
engine = "google"
|
||||
# Google: https://programmablesearchengine.google.com/
|
||||
# Google Custom Search Engine Context
|
||||
|
||||
# FixIt 0.3.16 | NEW Custom Search Engine (CSE)
|
||||
[params.cse]
|
||||
# Search Engine: ["google", "bing"]
|
||||
engine = ""
|
||||
# Search results page URL (layout: search)
|
||||
resultsPage = "/search/"
|
||||
# Google: https://programmablesearchengine.google.com/
|
||||
# Google Custom Search Engine Context
|
||||
[params.cse.google]
|
||||
cx = ""
|
||||
# Bing (Unsupported): https://www.customsearch.ai/
|
||||
# Bing (Unsupported): https://www.customsearch.ai/
|
||||
[params.cse.bing]
|
||||
|
||||
# Header config
|
||||
[params.header]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
{{- define "content" -}}
|
||||
{{- $params := partial "function/params.html" -}}
|
||||
{{- $cse := .Site.Params.search.cse -}}
|
||||
{{- $cse := .Site.Params.cse -}}
|
||||
<article class="page single special search">
|
||||
<div class="header">
|
||||
{{- /* Title */ -}}
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
{{- /* Google CSE */ -}}
|
||||
{{- if eq $cse.engine "google" -}}
|
||||
{{- with $cse.cx -}}
|
||||
{{- with $cse.google.cx -}}
|
||||
<script async defer src="https://cse.google.com/cse.js?cx={{ . }}"></script>
|
||||
<div class="gcse-searchbox"></div>
|
||||
<div class="gcse-searchresults"></div>
|
||||
|
||||
@@ -22,6 +22,16 @@
|
||||
{{- $source := $cdn.fuseJS | default "lib/fuse/fuse.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- $config = dict "isCaseSensitive" $search.fuse.isCaseSensitive "minMatchCharLength" $search.fuse.minMatchCharLength "findAllMatches" $search.fuse.findAllMatches "location" $search.fuse.location "threshold" $search.fuse.threshold "distance" $search.fuse.distance "ignoreLocation" $search.fuse.ignoreLocation "useExtendedSearch" $search.fuse.useExtendedSearch "ignoreFieldNorm" $search.fuse.ignoreFieldNorm | dict "search" | merge $config -}}
|
||||
{{- else if eq $search.type "cse" -}}
|
||||
{{- $config = dict "type" "cse" | dict "search" | merge $config -}}
|
||||
{{- $cse := .Site.Params.cse -}}
|
||||
{{- $config = dict "resultsPage" $cse.resultsPage "gotoResultsPage" (T "assets.gotoResultsPage") | dict "cse" | merge $config -}}
|
||||
{{- if (eq $cse.engine "google") | and $cse.google.cx -}}
|
||||
{{- $config = dict "engine" "google" "cx" $cse.google.cx "searchIn" (T "assets.searchIn" "Google") | dict "cse" | merge $config -}}
|
||||
{{- end -}}
|
||||
{{- if eq $cse.engine "bing" -}}
|
||||
{{- /* Unsupported */ -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user