Widżet wyszukiwania zawiera konfigurowalny interfejs wyszukiwania dla aplikacji internetowych. Widżet wymaga niewielkiej ilości kodu HTML i JavaScript do implementować i włączać typowe funkcje wyszukiwania, takie jak aspekty i podział na strony; Ty może też dostosować części interfejsu za pomocą arkuszy CSS i JavaScript.
Jeśli potrzebujesz większej elastyczności niż widżet, rozważ użycie Interfejs Query API. Informacje o tworzeniu interfejsu wyszukiwania za pomocą interfejsu Query API znajdziesz znajdziesz w artykule Tworzenie interfejsu wyszukiwania za pomocą interfejsu Query API.
Tworzenie interfejsu wyszukiwania
Utworzenie interfejsu wyszukiwania składa się z kilku kroków:
- Konfigurowanie wyszukiwarki
- Wygeneruj identyfikator klienta dla aplikacji
- Dodaj znaczniki HTML pola wyszukiwania i wyników
- Wczytaj widżet na stronie
- Zainicjuj widżet
Konfigurowanie wyszukiwarki
Każdy interfejs wyszukiwania musi mieć zdefiniowaną wyszukiwarkę zdefiniowaną w konsoli administracyjnej. Wyszukiwarka udostępnia dodatkowe informacje związane z zapytaniem, takie jak źródła danych, aspekty, i ustawieniami jakości wyszukiwania.
Aby utworzyć wyszukiwarkę, zapoznaj się z artykułem Utwórz niestandardową wyszukiwarkę.
Wygeneruj identyfikator klienta dla aplikacji
Poza wykonaniem kroków opisanych w Skonfiguruj dostęp do interfejsu Google Cloud Search API. musisz też wygenerować identyfikator klienta dla aplikacji internetowej.
Podczas konfigurowania projektu:
- Wybierz typ klienta Przeglądarka internetowa.
- Podaj identyfikator URI źródła Twojej aplikacji.
- Zanotuj utworzony identyfikator klienta. Będzie Ci potrzebny identyfikator klienta do o wykonanie kolejnych kroków. Tajny klucz klienta nie jest wymagany w przypadku widżet.
Więcej informacji: Protokół OAuth 2.0 dla aplikacji internetowej po stronie klienta
Dodaj znaczniki HTML
Widżet wymaga do działania niewielkiej ilości kodu HTML. Ty musi zawierać:
- Element
input
pola wyszukiwania. - Element, do którego zakotwiczysz wyskakujące okienko z sugestią.
- Element do przechowywania wyników wyszukiwania.
- (Opcjonalnie) Podaj element zawierający elementy sterujące aspektów.
Poniższy fragment kodu HTML zawiera kod HTML widżetu wyszukiwania, w którym element
Elementy do powiązania są identyfikowane przez atrybut id
:
Wczytaj widżet
Widżet jest ładowany dynamicznie przez skrypt wczytujący. Do uwzględnienia
W programie wczytywania użyj tagu <script>
w taki sposób:
Musisz podać wywołanie zwrotne onload
w tagu skryptu. Funkcja ta nazywa się
gdy moduł ładowania będzie gotowy. Gdy narzędzie będzie gotowe, kontynuuj ładowanie widżetu
wywołując metodę gapi.load()
, która pozwala wczytać klienta interfejsu API, moduły Logowanie przez Google i Cloud Search.
Funkcja initializeApp()
jest wywoływana, gdy wszystkie moduły są
wczytano.
Zainicjuj widżet
Najpierw zainicjuj bibliotekę klienta, wywołując
gapi.client.init()
lub gapi.auth2.init()
za pomocą wygenerowanego identyfikatora klienta
i zakresu https://www.googleapis.com/auth/cloud_search.query
. Następnie użyj
gapi.cloudsearch.widget.resultscontainer.Builder
i
gapi.cloudsearch.widget.searchbox.Builder
klasy do konfigurowania widżetu
i powiązać go z elementami HTML.
Poniższy przykład pokazuje, jak uruchomić widżet:
W przykładzie powyżej podano 2 zmienne konfiguracji zdefiniowane w taki sposób:
Dostosowywanie procesu logowania
Domyślnie widżet prosi użytkowników o zalogowanie się i autoryzowanie aplikacji w chwili, gdy zaczną wpisywać zapytanie. Za pomocą Logowanie przez Google w witrynach aby lepiej dostosować proces logowania do potrzeb użytkowników.
Bezpośrednie autoryzację użytkowników
Użyj funkcji Zaloguj się przez Google, aby monitorować stan logowania
użytkownika, a także zalogować lub wylogować użytkowników. Na przykład:
przykład zauważa isSignedIn
w celu monitorowania zmian
logowania oraz
korzysta z funkcji GoogleAuth.signIn()
do inicjowania logowania za pomocą przycisku
kliknij:
Więcej informacji znajdziesz w artykule Logowanie się przez Google.
Automatyczne logowanie użytkowników
Aby jeszcze bardziej uprościć logowanie, możesz wstępnie autoryzować w imieniu użytkowników z Twojej organizacji. Ta technika jest przydatne też w przypadku korzystania z Cloud Identity Aware Proxy. aby chronić aplikację.
Więcej informacji znajdziesz w artykule Korzystanie z logowania przez Google w aplikacjach IT.
Dostosowywanie interfejsu
Możesz zmienić wygląd interfejsu wyszukiwania, używając kombinacji tych elementów technik:
- Zastępowanie stylów CSS
- Ozdabiaj elementy za pomocą adaptera
- Tworzenie elementów niestandardowych za pomocą adaptera
Zastępowanie stylów CSS
Widżet wyszukiwania ma własny arkusz CSS do określania stylu sugestii i elementów wyników jak i z elementami sterującymi podziałem na strony. W razie potrzeby możesz zmienić styl tych elementów.
Podczas wczytywania widżet wyszukiwania dynamicznie wczytuje swój domyślny arkusz stylów. Dzieje się tak po wczytaniu arkuszy stylów aplikacji, co zwiększa priorytet zasad. Aby mieć pewność, że Twoje własne style będą miały pierwszeństwo przed stylami domyślnymi, użyj selektorów elementów nadrzędnych, aby zwiększyć szczegółowość reguł domyślnych.
Na przykład poniższa reguła nie działa, jeśli jest wczytywana w elemencie statycznym
link
lub style
w dokumencie.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Zamiast tego kwalifikuj regułę na podstawie identyfikatora lub klasy kontenera nadrzędnego zadeklarowany na stronie.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
Listę klas pomocy i przykładowego kodu HTML wygenerowanego przez widżet znajdziesz w sekcji Dokumentacja obsługiwanych klas CSS.
Ozdabiaj elementy za pomocą adaptera
Aby udekorować element przed wyrenderowaniem, utwórz i ponownie zarejestruj
umożliwiający zastosowanie jednej z metod dekorowania, takich jak
decorateSuggestionElement
lub decorateSearchResultElement.
Na przykład te adaptery dodają do sugestii klasę niestandardową i elementów wyników.
Aby zarejestrować adapter podczas inicjowania widżetu, użyj narzędzia setAdapter()
odpowiedniej klasy Builder
:
Dekoratory mogą modyfikować atrybuty elementu kontenera oraz elementów podrzędnych. Podczas dekorowania można dodawać i usuwać elementy podrzędne. Jeśli jednak wprowadzisz zmiany strukturalne elementów, rozważ utworzenie elementów bezpośrednio zamiast dekorowania.
Tworzenie elementów niestandardowych za pomocą adaptera
Aby utworzyć element niestandardowy dla sugestii, kontenera aspektu lub wyniku wyszukiwania:
utworzyć i zarejestrować adapter, który implementuje
createSuggestionElement
,
createFacetResultElement
,
lub createSearchResultElement
traktowanie jakby nie było miłością.
Poniższe adaptery ilustrują tworzenie niestandardowych sugestii i wyników wyszukiwania
elementy korzystające z tagów HTML <template>
.
Aby zarejestrować adapter podczas inicjowania widżetu, użyj komponentu setAdapter()
odpowiedniej klasy Builder
:
Tworzenie elementów aspektów niestandardowych za pomocą funkcji createFacetResultElement
podlegają kilku ograniczeniom:
- Musisz dołączyć klasę usługi porównywania cen
cloudsearch_facet_bucket_clickable
do element, który użytkownik klika, aby przełączyć zasobnik. - Musisz opakować każdy zasobnik w element nadrzędny za pomocą atrybutu CSS
zajęcia
cloudsearch_facet_bucket_container
. - Nie możesz wyrenderować zasobników w innej kolejności niż występują w .
Na przykład ten fragment renderuje aspekty za pomocą linków pola wyboru.
Dostosowywanie działania wyszukiwania
Ustawienia wyszukiwarki odpowiadają domyślnym ustawieniom dla interfejsu wyszukiwania i są statyczne. Aby wdrożyć kreacje dynamiczne, filtry lub aspekty, np. aby umożliwić użytkownikom przełączanie źródeł danych, zastąpić ustawienia wyszukiwarki przez przechwycenie żądania wyszukiwania z przejściówką.
Zaimplementuj przejściówkę z
interceptSearchRequest
do modyfikowania żądań wysyłanych do
interfejs Search API
przed wykonaniem tych czynności.
Na przykład poniższy adapter przechwytuje żądania, aby ograniczyć zapytania do źródła wybranego przez użytkownika:
Aby zarejestrować adapter podczas inicjowania widżetu, użyj
setAdapter()
podczas tworzenia ResultsContainer
Następujący kod HTML służy do wyświetlenia pola wyboru, według którego można filtrować źródła:
Następujący kod nasłuchuje zmiany, ustawia wybór oraz w razie potrzeby ponownie wykonuje zapytanie.
Możesz też przechwytywać odpowiedź wyszukiwania, implementując
interceptSearchResponse
w przejściu.
Przypnij wersję interfejsu API
Domyślnie widżet używa najnowszej stabilnej wersji interfejsu API. Aby zablokować
określonej wersji, ustaw parametr konfiguracji cloudsearch.config/apiVersion
lub wybrać preferowaną wersję przed jego zainicjowaniem.
Jeśli zasada jest nieskonfigurowana lub ustawiona na nieprawidłową wartość, wersja interfejsu API przyjmuje domyślnie wartość 1.0.
Przypnij wersję widżetu
Aby uniknąć nieoczekiwanych zmian w interfejsach wyszukiwania, ustaw parametr
cloudsearch.config/clientVersion
, jak pokazano poniżej:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
Jeśli nie jest skonfigurowana lub zostanie ustawiona na nieprawidłową wartość, wersja widżetu będzie domyślnie ustawiona na 1,0.
Zabezpieczanie interfejsu wyszukiwania
Wyniki wyszukiwania zawierają informacje poufne. Stosowanie sprawdzonych metod do zabezpieczania aplikacji internetowych, zwłaszcza przed ataki typu clickjacking.
Więcej informacji znajdziesz w przewodniku OWASP Guide (w języku angielskim).
Włącz debugowanie
Użyj formatu interceptSearchRequest
aby włączyć debugowanie widżetu wyszukiwania. Na przykład:
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;