Le widget Recherche fournit une interface de recherche personnalisable pour les applications Web. Le widget ne nécessite qu'une petite quantité de code HTML et JavaScript pour implémenter et activer des fonctions de recherche courantes telles que les attributs et la pagination. Toi vous pouvez également personnaliser certaines parties de l'interface avec du code CSS et JavaScript.
Si vous avez besoin de plus de flexibilité que le widget, envisagez d'utiliser la de l'API Query. Pour en savoir plus sur la création d'une interface de recherche avec l'API Query, consultez l'article Créer une interface de recherche avec l'API Query.
Créer une interface de recherche
La création de l'interface de recherche nécessite plusieurs étapes:
- Configurer une application de recherche
- Générer un ID client pour l'application
- Ajouter un balisage HTML pour le champ de recherche et les résultats
- Charger le widget sur la page
- Initialiser le widget
Configurer une application de recherche
Une application de recherche doit être définie pour chaque interface de recherche dans le console d'administration Google. L'application de recherche fournit des informations les informations de la requête, telles que les sources de données, les attributs, et les paramètres de qualité de la recherche.
Pour créer une application de recherche, reportez-vous à Créez une expérience de recherche personnalisée.
Générer un ID client pour l'application
En plus des étapes décrites dans Configurer l'accès à l'API Google Cloud Search vous devez également générer un ID client pour l'application Web.
Lorsque vous configurez le projet:
- Sélectionnez le type de client Navigateur Web.
- Indiquez l'URI d'origine. de votre application.
- Notez l'ID client créé. Vous aurez besoin de l'ID client pour effectuer les étapes suivantes. Le code secret du client n'est pas nécessaire pour .
Pour en savoir plus, consultez OAuth 2.0 pour les applications Web côté client
Ajouter un balisage HTML
Le widget nécessite une petite quantité de code HTML pour fonctionner. Toi doit fournir:
- Un élément
input
pour le champ de recherche. - Élément auquel ancrer le pop-up de suggestion.
- Élément qui contiendra les résultats de recherche.
- (Facultatif) Fournissez un élément qui contiendra les commandes d'attributs.
L'extrait de code HTML suivant montre le code HTML d'un widget Recherche, où le
Les éléments à lier sont identifiés par leur attribut id
:
Charger le widget
Le widget est chargé de manière dynamique via un script de chargement. À inclure
le chargeur, utilisez le tag <script>
comme indiqué ci-dessous:
Vous devez fournir un rappel onload
dans la balise de script. Cette fonction s'appelle
lorsque le chargeur est prêt. Lorsque le chargeur est prêt, continuez à charger le widget.
en appelant gapi.load()
pour charger le client API, Google Sign-In et Cloud Search.
La fonction initializeApp()
est appelée une fois que tous les modules sont
chargé.
Initialiser le widget
Commencez par initialiser la bibliothèque cliente en appelant
gapi.client.init()
ou gapi.auth2.init()
par l'ID client généré
et le champ d'application https://www.googleapis.com/auth/cloud_search.query
. Ensuite, utilisez
les gapi.cloudsearch.widget.resultscontainer.Builder
et
Des classes gapi.cloudsearch.widget.searchbox.Builder
pour configurer le widget
et les lier à vos éléments HTML.
L'exemple suivant montre comment initialiser le widget:
L'exemple ci-dessus fait référence à deux variables de configuration définies comme suit:
Personnaliser l'expérience de connexion
Par défaut, le widget invite les utilisateurs à se connecter et à autoriser l'application. lorsqu'ils commencent à saisir une requête. Vous pouvez utiliser Google Sign-In pour les sites Web afin d'offrir une expérience de connexion plus personnalisée aux utilisateurs.
Autoriser directement les utilisateurs
Utilisez la fonctionnalité Se connecter avec Google pour surveiller l'état de connexion du
utilisateur et les connecter ou les déconnecter selon les besoins. Par exemple :
exemple observe la isSignedIn
pour surveiller les changements de connexion et
utilise le GoogleAuth.signIn()
pour lancer la connexion à partir d'un bouton
cliquez sur:
Pour en savoir plus, consultez Se connecter avec Google.
Connecter automatiquement les utilisateurs
Vous pouvez simplifier le processus de connexion en pré-autorisant le application pour le compte des utilisateurs de votre organisation. Cette technique est Il est également utile si vous utilisez Cloud Identity-Aware Proxy pour protéger l'application.
Pour en savoir plus, consultez Utiliser Google Sign-In avec des applications informatiques.
Personnaliser l'interface
Vous pouvez modifier l'apparence de l'interface de recherche à l'aide d'une combinaison techniques:
- Remplacer les styles avec du CSS
- Décorer les éléments avec un adaptateur
- Créer des éléments personnalisés avec un adaptateur
Remplacer les styles avec du CSS
Le widget Recherche dispose de son propre code CSS pour définir le style des éléments de suggestions et de résultats. ainsi que les commandes de pagination. Vous pouvez modifier le style de ces éléments si nécessaire.
Lors du chargement, le widget Recherche charge sa feuille de style par défaut de manière dynamique. Cela se produit après le chargement des feuilles de style de l'application, ce qui augmente la priorité des règles. Pour vous assurer que vos propres styles prévalent sur les styles par défaut, utiliser des sélecteurs d'ancêtre pour accroître la spécificité des règles par défaut.
Par exemple, la règle suivante n'a aucun effet si elle est chargée dans un
link
ou style
dans le document.
.cloudsearch_suggestion_container {
font-size: 14px;
}
Qualifiez plutôt la règle avec l'ID ou la classe du conteneur ancêtre déclaré sur la page.
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
Pour obtenir la liste des classes compatibles et un exemple de code HTML généré par le widget, consultez la Consultez la documentation de référence sur les classes CSS compatibles.
Décorer les éléments avec un adaptateur
Pour décorer un élément avant son rendu, créez et reigster une
qui implémente l'une des méthodes de décoration telles que
decorateSuggestionElement
ou decorateSearchResultElement.
Par exemple, les adaptateurs suivants ajoutent une classe personnalisée à la suggestion et des éléments de résultat.
Pour enregistrer l'adaptateur lors de l'initialisation du widget, utilisez setAdapter()
.
de la classe Builder
correspondante:
Les décorateurs peuvent modifier les attributs de l'élément conteneur, ainsi que éléments enfants. Des éléments enfants peuvent être ajoutés ou supprimés pendant la décoration. Toutefois, si vous apportez des modifications structurelles aux éléments, envisagez de créer les éléments directement au lieu de les décorer.
Créer des éléments personnalisés avec un adaptateur
Pour créer un élément personnalisé pour une suggestion, un conteneur d'attributs ou un résultat de recherche :
créer et enregistrer un adaptateur qui implémente
createSuggestionElement
createFacetResultElement
ou createSearchResultElement
respectivement.
Les adaptateurs suivants illustrent la création de suggestions personnalisées et de résultats de recherche
à l'aide de balises HTML <template>
.
Pour enregistrer l'adaptateur lors de l'initialisation du widget, utilisez setAdapter()
.
de la classe Builder
correspondante:
Créer des éléments d'attribut personnalisés avec createFacetResultElement
est soumis à plusieurs restrictions:
- Vous devez associer la classe CSS
cloudsearch_facet_bucket_clickable
à sur lequel les utilisateurs cliquent pour activer/désactiver un bucket. - Vous devez encapsuler chaque bucket dans un élément conteneur à l'aide du code CSS
cloudsearch_facet_bucket_container
. - Vous ne pouvez pas afficher les buckets dans un ordre différent de celui indiqué dans le de réponse.
Par exemple, l'extrait de code suivant affiche les attributs à l'aide de liens à la place de cases à cocher.
Personnaliser le comportement de recherche
Les paramètres de l'application de recherche représentent pour une interface de recherche et sont statiques. Pour implémenter des créations dynamiques des filtres ou des attributs, comme autoriser les utilisateurs à changer de source de données, vous pouvez remplacer les paramètres de l'application de recherche en interceptant la requête à l'aide d'un adaptateur.
Implémentez un adaptateur avec
interceptSearchRequest
pour modifier les requêtes adressées au
API search
avant l'exécution.
Par exemple, l'adaptateur suivant intercepte les requêtes pour limiter les requêtes vers une source sélectionnée par l'utilisateur:
Pour enregistrer l'adaptateur lors de l'initialisation du widget, utilisez la méthode
setAdapter()
lors de la création de ResultsContainer
Le code HTML suivant permet d'afficher une zone de sélection pour le filtrage par sources:
Le code suivant écoute la modification, définit la sélection et réexécute la requête si nécessaire.
Vous pouvez également intercepter la réponse de la recherche en implémentant
interceptSearchResponse
dans l'adaptateur.
Épingler la version de l'API
Par défaut, le widget utilise la dernière version stable de l'API. Pour verrouiller un
une version spécifique, définissez le paramètre de configuration cloudsearch.config/apiVersion
vers la version préférée avant d'initialiser le widget.
Si elle n'est pas définie ou si elle est définie sur une valeur non valide, la version de l'API est définie par défaut sur 1.0.
Épingler la version du widget
Pour éviter toute modification inattendue des interfaces de recherche, définissez le paramètre
Paramètre de configuration cloudsearch.config/clientVersion
, comme indiqué ci-dessous:
gapi.config.update('cloudsearch.config/clientVersion', 1.1);
Si elle n'est pas définie ou si elle est définie sur une valeur non valide, la version du widget est définie par défaut sur 1.0.
Sécuriser l'interface de recherche
Les résultats de recherche contiennent des informations hautement sensibles. Suivez les bonnes pratiques pour sécuriser les applications Web, notamment les attaques par détournement de clic.
Pour en savoir plus, consultez la page OWASP Guide Project (Projet du guide OWASP).
Activer le débogage
Utiliser interceptSearchRequest
pour activer le débogage du widget Recherche. Exemple :
if (!request.requestOptions) {
// Make sure requestOptions is populated
request.requestOptions = {};
}
// Enable debugging
request.requestOptions.debugOptions = {enableDebugging: true}
return request;