Widżet wyszukiwania udostępnia konfigurowalny interfejs wyszukiwania dla aplikacji internetowych. Do jego wdrożenia wymagana jest minimalna ilość kodu HTML i JavaScript, a widżet obsługuje typowe funkcje, takie jak aspekty i paginacja. Możesz też dostosować interfejs za pomocą CSS i JavaScript.
Jeśli potrzebujesz większej elastyczności, użyj interfejsu Query API. Zobacz Tworzenie interfejsu wyszukiwania za pomocą interfejsu Query API.
Tworzenie interfejsu wyszukiwania
Tworzenie interfejsu wyszukiwania wymaga wykonania tych czynności:
- Skonfiguruj wyszukiwarkę.
- Wygeneruj identyfikator klienta aplikacji.
- Dodaj znaczniki HTML dla pola wyszukiwania i wyników.
- Załaduj widżet na stronie.
- Zainicjuj widżet.
Konfigurowanie wyszukiwarki
Każdy interfejs wyszukiwania wymaga wyszukiwarki zdefiniowanej w konsoli administracyjnej. Aplikacja udostępnia ustawienia zapytań, takie jak źródła danych, aspekty i parametry jakości wyszukiwania.
Aby utworzyć wyszukiwarkę, zobacz Tworzenie niestandardowego wyszukiwania.
Generowanie identyfikatora klienta aplikacji
Oprócz czynności opisanych w artykule Konfigurowanie dostępu do interfejsu Cloud Search API, wygeneruj identyfikator klienta aplikacji internetowej.
Podczas konfigurowania projektu:
- Wybierz typ klienta Przeglądarka internetowa.
- Podaj identyfikator URI źródła aplikacji.
- Zapisz identyfikator klienta. Widżet nie wymaga tajnego klucza klienta.
Więcej informacji znajdziesz w artykule OAuth 2.0 dla aplikacji internetowych po stronie klienta.
Dodawanie znaczników HTML
Widżet wymaga tych elementów HTML:
- Element
inputdla pola wyszukiwania. - Element, do którego będzie przytwierdzone okno sugestii.
- Element dla wyników wyszukiwania.
- (Opcjonalnie) Element dla elementów sterujących aspektami.
Ten fragment kodu pokazuje elementy zidentyfikowane za pomocą atrybutów id:
Ładowanie widżetu
Dołącz moduł wczytujący za pomocą tagu <script>:
Podaj wywołanie zwrotne onload. Gdy moduł wczytujący będzie gotowy, wywołaj
gapi.load()
aby załadować klienta API, Logowanie przez Google i moduły Cloud Search.
Inicjowanie widżetu
Zainicjuj bibliotekę klienta za pomocą gapi.client.init() lub gapi.auth2.init() z identyfikatorem klienta i zakresem https://www.googleapis.com/auth/cloud_search.query. Użyj klas konstruktora, aby skonfigurować i powiązać widżet.
Przykład inicjowania:
Zmienne konfiguracji:
Dostosowywanie logowania
Gdy użytkownicy zaczną pisać, widżet wyświetli prośbę o zalogowanie się. Aby dostosować działanie usługi, możesz użyć funkcji Zaloguj się przez Google w witrynach.
Bezpośrednie autoryzowanie użytkowników
Aby monitorować stany logowania i nimi zarządzać, użyj funkcji Zaloguj się przez Google.
W tym przykładzie używamy GoogleAuth.signIn() po kliknięciu przycisku:
Automatyczne logowanie użytkowników
Aby uprościć logowanie, wstępnie autoryzuj aplikację dla użytkowników w organizacji. Jest to też przydatne w przypadku Cloud Identity Aware Proxy. Zobacz Korzystanie z funkcji Logowanie przez Google w aplikacjach IT Apps.
Dostosowywanie interfejsu
Wygląd widżetu możesz zmienić, wykonując te czynności:
- Zastąp style za pomocą CSS.
- Udekoruj elementy za pomocą adaptera.
- Utwórz elementy niestandardowe za pomocą adaptera.
Zastępowanie stylów za pomocą CSS
Widżet zawiera własny arkusz CSS. Aby go zastąpić, użyj selektorów nadrzędnych, aby zwiększyć specyficzność:
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
Zobacz dokumentację obsługiwanych klas CSS.
Dekorowanie elementów za pomocą adaptera
Utwórz i zarejestruj adapter, aby modyfikować elementy przed renderowaniem. Ten przykład dodaje niestandardową klasę CSS:
Zarejestruj adapter podczas inicjowania:
Tworzenie elementów niestandardowych za pomocą adaptera
Aby tworzyć niestandardowe komponenty interfejsu, zaimplementuj createSuggestionElement, createFacetResultElement lub createSearchResultElement. Ten przykład używa
HTML <template> tagów:
Zarejestruj adapter:
Niestandardowe elementy aspektów muszą być zgodne z tymi regułami:
- Do elementów, które można kliknąć, dołącz
cloudsearch_facet_bucket_clickable. - Każdy zasobnik umieść w elemencie
cloudsearch_facet_bucket_container. - Zachowaj kolejność zasobników z odpowiedzi.
Na przykład ten fragment kodu renderuje aspekty za pomocą linków zamiast pól wyboru.
Dostosowywanie zachowań związanych z wyszukiwaniem
Zastąp ustawienia wyszukiwarki, przechwytując żądania za pomocą adaptera.
Aby modyfikować żądania przed ich wykonaniem, zaimplementuj interceptSearchRequest. Ten przykład ogranicza zapytania do wybranego źródła:
Zarejestruj adapter:
Ten kod HTML służy do wyświetlania pola wyboru do filtrowania według źródeł:
Ten kod nasłuchuje zmiany, ustawia wybór i w razie potrzeby ponownie wykonuje zapytanie.
Możesz też przechwytywać odpowiedzi wyszukiwania, implementując
interceptSearchResponse
w adapterze.
Przypinanie wersji
- Wersja interfejsu API: przed zainicjowaniem ustaw
cloudsearch.config/apiVersion. - Wersja widżetu: użyj
gapi.config.update('cloudsearch.config/clientVersion', 1.1).
Jeśli nie ustawisz tych wartości, domyślnie będą one wynosić 1.0.
Aby na przykład przypiąć widżet do wersji 1.1:
Zabezpieczanie interfejsu wyszukiwania
Postępuj zgodnie ze sprawdzonymi metodami dotyczącymi bezpieczeństwa aplikacji internetowych, zwłaszcza aby zapobiegać clickjackingowi.
Włączanie debugowania
Aby włączyć debugowanie, użyj
interceptSearchRequest:
if (!request.requestOptions) {
request.requestOptions = {};
}
request.requestOptions.debugOptions = {enableDebugging: true};
return request;