Puedes incorporar componentes del Motor de Búsqueda Programable (cuadros de búsqueda y páginas de resultados de búsqueda) en tus páginas web y otras aplicaciones web con lenguaje de marcado HTML. Estos elementos del Motor de Búsqueda Programable constan de componentes que se renderizan según la configuración almacenada por el servidor de Programmable Search, junto con las personalizaciones que realices.
Todo el código JavaScript se carga de forma asíncrona, lo que permite que tu página web siga cargándose mientras el navegador recupera el código JavaScript del Motor de Búsqueda Programable.
Introducción
En este documento, se proporciona un modelo básico para agregar elementos del Motor de Búsqueda Programable a tu página web, junto con explicaciones de los componentes configurables del elemento y la flexible API de JavaScript.
Alcance
En este documento, se describe cómo usar las funciones y propiedades específicas de la API de Programmable Search Engine Control.
Compatibilidad del navegador
Puedes encontrar la lista de navegadores compatibles con el Motor de Búsqueda Programable aquí.
Público
Esta documentación está dirigida a los desarrolladores que deseen agregar la funcionalidad de la Búsqueda Programable de Google a sus páginas.
Elementos de Búsqueda Programable
Puedes usar el lenguaje de marcado HTML para agregar un elemento de Búsqueda Programable a tu página. Cada elemento consta de, al menos, un componente: un cuadro de búsqueda, un bloque de resultados de la búsqueda o ambos. El cuadro de búsqueda acepta la entrada del usuario de cualquiera de las siguientes maneras:
- Una búsqueda escrita en el campo de entrada de texto
- Es una cadena de consulta integrada en una URL.
- Ejecución programática
Además, el bloque de resultados de la búsqueda acepta entradas de las siguientes maneras:
- Es una cadena de consulta integrada en una URL.
- Ejecución programática
Están disponibles los siguientes tipos de elementos de Búsqueda Programable:
| Tipo de elemento | Componentes | Descripción |
|---|---|---|
| standard | <div class="gcse-search"> |
Un cuadro de búsqueda y resultados de la búsqueda, que se muestran en el mismo <div>. |
| dos columnas | <div class="gcse-searchbox"> y <div class="gcse-searchresults"> |
Un diseño de dos columnas con resultados de la búsqueda en un lado y un cuadro de búsqueda en el otro. Si planeas insertar varios elementos en el modo de dos columnas en tu página web, puedes usar el atributo gname para vincular un cuadro de búsqueda con un bloque de resultados de búsqueda. |
| Solo cuadro de búsqueda | <div class="gcse-searchbox-only"> |
Un cuadro de búsqueda independiente |
| searchresults-only | <div class="gcse-searchresults-only"> |
Es un bloque independiente de resultados de la búsqueda. |
Puedes agregar la cantidad que desees de elementos de búsqueda válidos a tu página web. En el modo de dos columnas, deben estar presentes todos los componentes requeridos (un cuadro de búsqueda y un bloque de resultados de búsqueda).
A continuación, se muestra un ejemplo de un elemento de búsqueda simple:
<!-- Put the following javascript before the closing </head> tag and replace 123456 with your own Programmable Search Engine ID. --> <script async src="https://cse.google.com/cse.js?cx=123456"></script> <!-- Place this tag where you want both of the search box and the search results to render --> <div class="gcse-search"></div>
Cómo componer diferentes opciones de diseño con elementos de Búsqueda Programable
Las siguientes opciones de diseño están disponibles en la página Aspecto del panel de control del Motor de Búsqueda Programable. A continuación, se incluyen algunos lineamientos generales para componer opciones de diseño con elementos de Búsqueda programable. Para ver una demostración de cualquiera de estas opciones, haz clic en el vínculo.
| Opción | Componentes |
|---|---|
| Ancho completo | <div class="gcse-search"> |
| Compacto | <div class="gcse-search"> |
| Dos columnas | <div class="gcse-searchbox">, <div class="gcse-searchresults"> |
| Dos páginas | <div class="gcse-searchbox-only"> en la primera página y <div class="gcse-searchresults-only"> (o algún otro componente) en la segunda |
| Solo resultados | <div class="gcse-searchresults-only"> |
| Alojado en Google | <div class="gcse-searchbox-only"> |
Más información sobre las opciones de diseño.
Cómo personalizar elementos de la Búsqueda Programable
Para personalizar los colores, la fuente o el estilo de los vínculos, ve a la página Aspecto de tu motor de búsqueda programable.
Puedes usar atributos opcionales para anular las configuraciones creadas en el panel de control del Motor de Búsqueda Programable. Esto te permite crear una experiencia de búsqueda específica para la página.
Por ejemplo, el siguiente código crea un cuadro de búsqueda que abre una página de resultados (http://www.example.com?search=lady+gaga) en una ventana nueva. El valor del atributo queryParameterName, junto con la cadena de consulta del usuario, se usa para crear la URL de los resultados.
Ten en cuenta que el atributo queryParameterName tiene el prefijo data-.
Este prefijo es obligatorio para todos los atributos.
<div class="gcse-searchbox-only" data-resultsUrl="http://www.example.com" data-newWindow="true" data-queryParameterName="search">
Si usaste el panel de control del Motor de Búsqueda Programable para habilitar funciones como autocompletar o refinamientos, puedes usar atributos para personalizar esas funciones. Cualquier personalización que especifiques con estos atributos anulará la configuración realizada en el panel de control. En el siguiente ejemplo, se crea un elemento de búsqueda de dos columnas con las siguientes características:
- La administración del historial está habilitada
- La cantidad máxima de autocompletados que se muestran está establecida en 5.
- Los refinamientos se muestran como vínculos.
<div class="gcse-searchbox" data-enableHistory="true" data-autoCompleteMaxCompletions="5"> <div class="gcse-searchresults" data-refinementStyle="link">
Atributos admitidos
| Atributo | Tipo | Descripción | Componente |
|---|---|---|---|
| General | |||
gname |
String | (Opcional) Nombre del objeto Search Element. Se usa un nombre para recuperar un componente asociado por su nombre o para vincular un componente searchbox con un componente searchresults. Si no se proporciona, el Motor de Búsqueda Programable generará automáticamente un gname según el orden de los componentes en la página web. Por ejemplo, el primer searchbox-only sin nombre tiene el gname "searchbox-only0", el segundo tiene el gname "searchbox-only1", y así sucesivamente.
Ten en cuenta que el gname generado automáticamente para un componente en un diseño de dos columnas será two-column. En el siguiente ejemplo, se usa el gname storesearch para vincular un componente searchbox con un componente searchresults:
<div class="gcse-searchbox" data-gname="storesearch"></div> <div class="gcse-searchresults" data-gname="storesearch"></div> Cuando se recupera un objeto, si más de un componente tiene el mismo |
Cualquiera |
autoSearchOnLoad |
Booleano | Especifica si se debe ejecutar una búsqueda con la consulta incorporada en la URL de la página que se está cargando. Ten en cuenta que debe haber una cadena de consulta en la URL para ejecutar la búsqueda automática. Valor predeterminado: true. |
Cualquiera |
enableHistory |
Booleano | Si es true, habilita la administración del historial para los botones Atrás y Adelante del navegador. Mira una demostración. |
cuadro de búsqueda Solo cuadro de búsqueda |
queryParameterName |
String | Nombre del parámetro de consulta, por ejemplo, q (predeterminado) o query. Se incorporará en la URL (por ejemplo, http://www.example.com?q=lady+gaga). Ten en cuenta que especificar solo el nombre del parámetro de consulta no activa la búsqueda automática en la carga. Para ejecutar la búsqueda automática, debe haber una cadena de consulta en la URL. |
Cualquiera |
resultsUrl |
URL | Es la URL de la página de resultados. (La opción predeterminada es la página alojada en Google). | Solo cuadro de búsqueda |
newWindow |
Booleano | Especifica si la página de resultados se abre en una ventana nueva.
Valor predeterminado: false. |
Solo cuadro de búsqueda |
ivt |
Booleano |
Este parámetro te permite proporcionar un valor booleano que le informa a Google que deseas permitir anuncios que utilizan una cookie exclusiva para el tráfico no válido y el almacenamiento local en el tráfico con consentimiento y sin este.
Valor predeterminado: Ejemplo de uso: |
searchresults searchresults-only |
mobileLayout |
String |
Especifica si se deben usar los diseños para dispositivos móviles.
Valor predeterminado: Ejemplo de uso: |
Cualquiera |
| Autocompletar | |||
enableAutoComplete |
Booleano | Solo está disponible si se habilitó la función de autocompletar en el panel de control del Motor de Búsqueda Programable.
true habilita la función de autocompletar. |
Cualquiera |
autoCompleteMaxCompletions |
Número entero | Es la cantidad máxima de sugerencias de autocompletado que se pueden mostrar. | cuadro de búsqueda Solo cuadro de búsqueda |
autoCompleteMaxPromotions |
Número entero | Es la cantidad máxima de promociones que se mostrarán en la función de autocompletar. | cuadro de búsqueda Solo cuadro de búsqueda |
autoCompleteValidLanguages |
String | Lista separada por comas de los idiomas para los que se debe habilitar la función de autocompletar. Idiomas admitidos. | cuadro de búsqueda Solo cuadro de búsqueda |
| Mejoras | |||
defaultToRefinement |
String | Solo está disponible si se crearon refinamientos en el panel de control del Motor de Búsqueda Programable. Especifica la etiqueta de refinamiento predeterminada que se mostrará.Nota: Este atributo no se admite para el diseño alojado en Google. | Cualquiera |
refinementStyle |
String | Los valores aceptables son tab (predeterminado) y link.
link solo se admite si la búsqueda de imágenes está inhabilitada o si está habilitada, pero la búsqueda web está inhabilitada. |
searchresults searchresults-only |
| Búsqueda de imágenes | |||
enableImageSearch |
Booleano | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Si es |
searchresults searchresults-only |
defaultToImageSearch |
Booleano | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Si es |
Cualquiera |
imageSearchLayout |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Especifica el diseño de la página de resultados de la búsqueda de imágenes. Los valores aceptables son |
searchresults searchresults-only |
imageSearchResultSetSize |
Número entero, cadena | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Especifica el tamaño máximo del conjunto de resultados de la búsqueda de imágenes.
Por ejemplo, |
Cualquiera |
image_as_filetype |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe los resultados a archivos con una extensión especificada. Las extensiones admitidas son | Cualquiera |
image_as_oq |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Filtra los resultados de la búsqueda con un OR lógico. Ejemplo de uso si deseas resultados de la búsqueda que incluyan "término1" o "término2": | Cualquiera |
image_as_rights |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Filtros basados en licencias. Los valores admitidos son Consulta las combinaciones típicas. | Cualquiera |
image_as_sitesearch |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe los resultados a páginas de un sitio específico. Ejemplo de uso: | Cualquiera |
image_colortype |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe la búsqueda a imágenes en blanco y negro (mono), en escala de grises o en color. Los valores admitidos son | Cualquiera |
image_cr |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe los resultados de la búsqueda a los documentos que se originan en un país específico. | Cualquiera |
image_dominantcolor |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe la búsqueda a imágenes con un color dominante específico.
Los valores admitidos son | Cualquiera |
image_filter |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Filtrado automático de los resultados de la búsqueda Valores admitidos: 0/1 Ejemplo de uso: | Cualquiera |
image_gl |
String | Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable. Potencia los resultados de la búsqueda cuyo país de origen coincida con el valor del parámetro. | Cualquiera |
image_size |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Devuelve imágenes de un tamaño especificado, donde el tamaño puede ser uno de los siguientes: | Cualquiera |
image_sort_by |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Ordenar los resultados por fecha o por otro contenido estructurado Para ordenar por relevancia, usa una cadena vacía (image_sort_by=""). Ejemplo de uso: | Cualquiera |
image_type |
String | Solo está disponible si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.
Restringe la búsqueda a imágenes de un tipo específico.
Los valores admitidos son | Cualquiera |
| Búsqueda web | |||
disableWebSearch |
Booleano | Si es true, inhabilita la búsqueda web. Por lo general, solo se usa si se habilitó la
búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable. |
searchresults searchresults-only |
webSearchQueryAddition |
String | Se agregan términos adicionales a la búsqueda con un OR lógico.
Ejemplo de uso: |
Cualquiera |
webSearchResultSetSize |
Número entero, cadena | Es el tamaño máximo del conjunto de resultados. Se aplica tanto a la búsqueda de imágenes como a la búsqueda web. El valor predeterminado depende del diseño y de si el Motor de Búsqueda Programable está configurado para buscar en toda la Web o solo en sitios específicos. Los valores aceptables son los siguientes:
|
Cualquiera |
webSearchSafesearch |
String |
Especifica si SafeSearch está habilitado para los resultados de la búsqueda web. Los valores aceptados son off y active.
|
Cualquiera |
as_filetype |
String | Restringe los resultados a archivos con una extensión especificada. En el Centro de ayuda de Search Console, puedes encontrar una lista de los tipos de archivo que Google puede indexar. | Cualquiera |
as_oq |
String | Filtra los resultados de la búsqueda con un OR lógico.
Ejemplo de uso si deseas resultados de la búsqueda que incluyan "término1" o "término2": |
Cualquiera |
as_rights |
String | Filtros basados en licencias.
Los valores admitidos son Consulta https://wiki.creativecommons.org/wiki/CC_Search_integration para ver las combinaciones típicas. | Cualquiera |
as_sitesearch |
String | Restringe los resultados a páginas de un sitio específico.
Ejemplo de uso: |
Cualquiera |
cr |
String | Restringe los resultados de la búsqueda a los documentos que se originan en un país específico.
Ejemplo de uso: |
Cualquiera |
filter |
String | Filtrado automático de los resultados de la búsqueda
Valores admitidos: 0/1 Ejemplo de uso: |
Cualquiera |
gl |
String | Potencia los resultados de la búsqueda cuyo país de origen coincida con el valor del parámetro.
Esto solo funcionará en conjunto con el parámetro de configuración del valor de idioma. Ejemplo de uso: |
Cualquiera |
lr |
String | Restringe los resultados de la búsqueda a los documentos escritos en un idioma específico.
Ejemplo de uso: |
Cualquiera |
sort_by |
String | Ordenar los resultados por fecha o por otro contenido estructurado El valor del atributo debe ser una de las opciones proporcionadas en la configuración de Orden de los resultados del motor de búsqueda programable.
Para ordenar por relevancia, usa una cadena vacía (sort_by=""). Ejemplo de uso: |
Cualquiera |
| Resultados de la búsqueda | |||
enableOrderBy |
Booleano | Permite ordenar los resultados por relevancia, fecha o etiqueta. | Cualquiera |
linkTarget |
String | Establece el destino del vínculo. Valor predeterminado: _blank. |
searchresults searchresults-only |
noResultsString |
String | Especifica el texto predeterminado que se mostrará cuando no haya resultados que coincidan con la búsqueda. La cadena de resultado predeterminada se puede usar para mostrar una cadena localizada en todos los idiomas admitidos, mientras que la personalizada no. | searchresults searchresults-only |
resultSetSize |
Número entero, cadena | Es el tamaño máximo del conjunto de resultados. Por ejemplo, large,
small, filtered_cse, 10. El valor predeterminado depende del diseño y de si el motor está configurado para buscar en toda la Web o solo en sitios específicos. |
Cualquiera |
safeSearch |
String | Especifica si
SafeSearch está habilitado para la búsqueda web y de imágenes. Los valores aceptados son off y active. |
Cualquiera |
Devoluciones de llamada
Las devoluciones de llamada admiten el control detallado de los procesos de inicialización y búsqueda de elementos de búsqueda.
Se registran con el JavaScript del Elemento de búsqueda a través del objeto global __gcse. Register Callbacks ilustra el registro de todas las devoluciones de llamada admitidas.
window.__gcse = {
parsetags: 'explicit', // Defaults to 'onload'
initializationCallback: myInitializationCallback,
searchCallbacks: {
image: {
starting: myImageSearchStartingCallback,
ready: myImageResultsReadyCallback,
rendered: myImageResultsRenderedCallback,
},
web: {
starting: myWebSearchStartingCallback,
ready: myWebResultsReadyCallback,
rendered: myWebResultsRenderedCallback,
},
},
};
La devolución de llamada de inicialización
La devolución de llamada de inicialización se invoca antes de que el JavaScript del Elemento de búsqueda renderice elementos de búsqueda en el DOM. Si parsetags se establece en explicit en __gcse, el JavaScript del elemento de búsqueda deja la renderización de los elementos de búsqueda en la devolución de llamada de inicialización (como se muestra en Cómo registrar devoluciones de llamada).
Esto se puede usar para seleccionar elementos que se renderizarán o para aplazar la renderización de elementos hasta que sean necesarios. También puede anular los atributos de los elementos. Por ejemplo, puede convertir un cuadro de búsqueda configurado a través del panel de control o los atributos HTML para que se establezca de forma predeterminada en la búsqueda web en un cuadro de búsqueda de imágenes, o bien especificar que las búsquedas enviadas a través de un formulario de motor de búsqueda programable se ejecuten en un elemento solo de resultados de búsqueda.
Mira una demostración.
El rol de la devolución de llamada de inicialización se controla con el valor de la propiedad parsetags del objeto __gcse.
- Si su valor es
onload, el JavaScript del Elemento de búsqueda renderiza automáticamente todos los Elementos de búsqueda en la página. Aún se invoca la devolución de llamada de inicialización, pero no es responsable de renderizar los Elementos de la Búsqueda. - Si su valor es
explicit, el JavaScript del Elemento de búsqueda no renderiza Elementos de búsqueda. La devolución de llamada puede renderizarlos de forma selectiva con la funciónrender()o renderizar todos los elementos de búsqueda con la funcióngo().
En el siguiente código, se muestra cómo renderizar un cuadro de búsqueda, junto con los resultados de la búsqueda, en un div, con la etiqueta de análisis explicit y la devolución de llamada de inicialización:
Debemos incluir un <div> con un valor de ID en el que queremos que aparezca el código del Elemento de búsqueda:
<div id="test"></div><div>. Ten en cuenta que hace referencia a test, el id que usamos para identificar el <div>.const myInitCallback = function() {
if (document.readyState == 'complete') {
// Document is ready when Search Element is initialized.
// Render an element with both search box and search results in div with id 'test'.
google.search.cse.element.render(
{
div: "test",
tag: 'search'
});
} else {
// Document is not ready yet, when Search Element is initialized.
google.setOnLoadCallback(function() {
// Render an element with both search box and search results in div with id 'test'.
google.search.cse.element.render(
{
div: "test",
tag: 'search'
});
}, true);
}
};
// Insert it before the Search Element code snippet so the global properties like parsetags and callback
// are available when cse.js runs.
window.__gcse = {
parsetags: 'explicit',
initializationCallback: myInitCallback
};
Incluye este código HTML para comenzar a cargar el Elemento de búsqueda. Reemplaza el valor cx en la cláusula src por tu propio cx.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>Devoluciones de llamada de búsqueda
El JavaScript del elemento de búsqueda admite seis devoluciones de llamada que operan en el flujo de control de búsqueda. Las devoluciones de llamada de búsqueda vienen en pares: una devolución de llamada de búsqueda web y una devolución de llamada de búsqueda de imágenes coincidente:
- Búsqueda en curso
- Para la búsqueda de imágenes
- Para la búsqueda web
- Los resultados están listos.
- Para la búsqueda de imágenes
- Para la búsqueda web
- Resultados renderizados
- Para la búsqueda de imágenes
- Para la búsqueda web
Al igual que la devolución de llamada de inicialización, las devoluciones de llamada de búsqueda se configuran con entradas en el objeto __gcse. Esto sucede cuando se inicia el código JavaScript del elemento de búsqueda. Se ignoran las modificaciones en __gcse después del inicio.
A cada una de estas devoluciones de llamada se le pasa el gName del Elemento de búsqueda como argumento.
El gname es útil cuando una página contiene más de una búsqueda. Asigna valores de gname a un elemento de búsqueda con el atributo data-gname:
<div class="gcse-searchbox" data-gname="storesearch"></div>
Si el código HTML no identifica el gname, el JavaScript del Elemento de búsqueda genera un valor que permanecerá coherente hasta que se modifique el código HTML.
Devolución de llamada de inicio de búsqueda de imágenes o en la Web
Las devoluciones de llamada de inicio de la búsqueda se invocan inmediatamente antes de que el elemento de búsqueda de JavaScript solicite resultados de la búsqueda a su servidor. Un ejemplo de caso de uso sería usar la hora local del día para controlar los cambios en la búsqueda.
searchStartingCallback(gname, query)
gname- Cadena de identificación del elemento de búsqueda
query Valor de - ingresado por el usuario (es posible que se haya modificado con el elemento de búsqueda de JavaScript).
La devolución de llamada muestra el valor que se debe usar como la búsqueda para esta búsqueda. Si devuelve una cadena vacía, se ignora el valor devuelto y el llamador usa la búsqueda sin modificar.
También puedes colocar la función de devolución de llamada en el objeto __gcse o agregar la devolución de llamada al objeto de forma dinámica con JavaScript:
window.__gcse['searchCallbacks']['web']['starting'] = function(gname, query) {...};Ejemplo de devolución de llamada de inicio de la búsqueda
El ejemplo de devolución de llamada de inicio de búsqueda en Ejemplo de devolución de llamada de inicio de búsqueda agrega morning o afternoon a la búsqueda según la hora del día.
const myWebSearchStartingCallback = (gname, query) => {
const hour = new Date().getHours();
return query + (hour < 12 ? ' morning' : ' afternoon');
};
window.myImageSearchStartingCallbackName = myWebSearchStartingCallback;
Instala esta devolución de llamada en window.__gcse:
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
image: {
starting: 'myImageSearchStartingCallbackName',
},
web: {
starting: myWebSearchStartingCallback,
},
};
<script
async src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>Devolución de llamada que indica que los resultados de la búsqueda de imágenes o web están listos
Estas devoluciones de llamada se invocan inmediatamente antes de que el JavaScript del Elemento de búsqueda renderice las promociones y los resultados. Un ejemplo de caso de uso sería una devolución de llamada que renderiza promociones y resultados con un estilo que no se puede especificar con la personalización normal.
resultsReadyCallback(gname, query, promos, results, div)
gname- Cadena de identificación del elemento de búsqueda
query- consulta que produjo estos resultados
promos- un array de objetos de promoción, que corresponden a las promociones que coinciden con la búsqueda del usuario. Consulta la definición del objeto promotion.
results- , un array de objetos de resultado. Consulta la definición del objeto result.
div- un elemento div de HTML ubicado en el DOM donde el Elemento de búsqueda normalmente colocaría promociones y resultados de la búsqueda Normalmente, el código JavaScript del Elemento de búsqueda se encargaría de completar este div, pero esta devolución de llamada puede optar por detener la renderización automática de los resultados y usar este
divpara renderizar los resultados por sí misma.
Si esta devolución de llamada muestra un valor de true, el JavaScript del Elemento de búsqueda se salta el trabajo del pie de página.
Ejemplo de devolución de llamada de resultados listos
La devolución de llamada resultsReady de ejemplo en Ejemplo de devolución de llamada de resultados listos anula la presentación predeterminada de las promociones y los resultados con un reemplazo muy simple.
const myResultsReadyCallback = function(name, q, promos, results, resultsDiv) {
const makePromoElt = (promo) => {
const anchor = document.createElement('a');
anchor.href = promo['url'];
anchor.target = '_blank';
anchor.classList.add('gs-title');
const span = document.createElement('span');
span.innerHTML = 'Promo: ' + promo['title'];
anchor.appendChild(span);
return anchor;
};
const makeResultParts = (result) => {
const anchor = document.createElement('a');
anchor.href = result['url'];
anchor.target = '_blank';
anchor.classList.add('gs_title');
anchor.appendChild(document.createTextNode(result['visibleUrl']));
const span = document.createElement('span');
span.innerHTML = ' ' + result['title'];
return [anchor, span];
};
const table = document.createElement('table');
if (promos) {
for (const promo of promos) {
const row = table.insertRow(-1);
const cell = row.insertCell(-1);
cell.appendChild(makePromoElt(promo));
}
resultsDiv.appendChild(table);
resultsDiv.appendChild(document.createElement('br'));
}
if (results) {
const table = document.createElement('table');
for (const result of results) {
const row = table.insertRow(-1);
const cell = row.insertCell(-1);
const [anchor, span] = makeResultParts(result);
cell.appendChild(anchor);
const cell2 = row.insertCell(-1);
cell2.appendChild(span);
}
resultsDiv.appendChild(table);
}
return true;
};
Instala esta devolución de llamada en window.__gcse:
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
ready: myResultsReadyCallback,
},
}; <script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Al igual que con la devolución de llamada de inicio de la búsqueda, lo anterior es una de las muchas formas de colocar la devolución de llamada en el objeto __gcse.
Devolución de llamada renderizada de los resultados de la búsqueda de imágenes o web
Estas devoluciones de llamada se invocan inmediatamente antes de que el JavaScript del Elemento de búsqueda renderice el pie de página. Entre los casos de uso de ejemplo, se incluiría una devolución de llamada que agrega contenido de resultados que el elemento de búsqueda no muestra, como una casilla de verificación Guardar o información que no se renderiza automáticamente, o una devolución de llamada que agrega botones Para obtener más información.
Si una devolución de llamada de resultados renderizados necesita información que estaba en los parámetros promos y results de la devolución de llamada de resultados listos, puede pasarla entre ellos, de la siguiente manera:
callback(gname, query, promoElts, resultElts);
gname- Cadena de identificación del elemento de búsqueda
query
Cadena de búsqueda de - .
promoElts- un array de los elementos del DOM que contienen promociones.
resultElts- : Un array de los elementos del DOM que contienen resultados.
No hay valor de retorno.
Ejemplo de devolución de llamada de resultados renderizados
La devolución de llamada de resultsRendered de ejemplo en Devolución de llamada de ejemplo de resultados renderizados agrega una casilla de verificación Keep ficticia a cada promoción y resultado.
myWebResultsRenderedCallback = function(name, q, promos, results) {
for (const div of promos.concat(results)) {
const innerDiv = document.createElement('div');
innerDiv.appendChild(document.createTextNode('Keep: '));
const checkBox = document.createElement('input');
checkBox.type = 'checkbox';
checkBox.name = 'save';
innerDiv.appendChild(checkBox);
div.insertAdjacentElement('afterbegin', innerDiv);
}
};
Instala esta devolución de llamada en window.__gcse:
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
rendered: 'myWebResultsRenderedCallback',
},
}; <script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Si la devolución de llamada de resultados renderizados necesita información que se pasó a la devolución de llamada de resultados listos, puede pasar esos datos entre las devoluciones de llamada. En el siguiente ejemplo, se muestra una de las muchas formas de pasar un valor de calificación de richSnippet desde la devolución de llamada de resultados listos a la devolución de llamada de resultados renderizados.
const makeTwoPartCallback = () => {
let saveForRenderCallback;
const readyCallback = (name, q, promos, results, resultsDiv) =>
{
saveForRenderCallback = [];
for (const result of results) {
const {
richSnippet: {
answer = []
} = {},
} = result;
const firstAnswer = answer[0];
if (firstAnswer) {
const upVotes = firstAnswer['upvotecount'];
if (upVotes) {
saveForRenderCallback.push(
{upvotes: parseInt(upVotes, 10)}
);
continue;
}
}
saveForRenderCallback.push({});
}
};
const renderedCallback = (name, q, promos, results) => {
for (let i = 0; i < results.length; ++i) {
const div = results[i];
const votes = saveForRenderCallback[i]['upvotes'];
if (votes) {
const innerDiv = document.createElement('div');
innerDiv.innerHTML = '<b>Upvotes: ' + votes + '</b>';
div.insertAdjacentElement('afterbegin', innerDiv);
}
}
};
return {readyCallback, renderedCallback};
};__gcse:
const {
readyCallback: webResultsReadyCallback,
renderedCallback: webResultsRenderedCallback,
} = makeTwoPartCallback();
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
ready: webResultsReadyCallback,
rendered: webResultsRenderedCallback,
},
}; <script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:kdroeu4mwju"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>Ejemplo de devolución de llamada de renderización de resultados: Apertura de tipos de archivos específicos en una pestaña o ventana nueva
En el siguiente ejemplo de devolución de llamada, se pueden modificar los vínculos de los resultados de la búsqueda después de que se renderizan para abrir un archivo específico en una pestaña o página nueva en lugar de la ventana actual (por ejemplo, PDF, Excel o Word). Esto mejora la experiencia de navegación cuando los usuarios no quieren abrir un archivo en la misma ventana y se alejan de la página de resultados.
En este ejemplo de devolución de llamada, se identifican los vínculos a archivos PDF en los resultados de la búsqueda y se establece el atributo target="_blank" en los vínculos a archivos PDF para que se abran en una pestaña nueva. Se usa un MutationObserver para controlar de forma dinámica los resultados nuevos si se actualiza la página. Nota: Puedes reemplazar .pdf en handleSearchResults por cualquier otro tipo de archivo según tus necesidades.
Este ejemplo de devolución de llamada no funciona en los diseños de Google Hosted ni de Overlay.
function handleSearchResults() {
const links = document.querySelectorAll('.gsc-results .gs-title');
links.forEach(link => {
const url = link.href;
if (url?.toLowerCase().endsWith('.pdf')) {
link.setAttribute('target', '_blank');
}
});
}
const myWebResultsRenderedCallback = () => {
// Call handleSearchResults when results are rendered
handleSearchResults();
// Set up a MutationObserver to handle subsequent updates to the results
const observer = new MutationObserver(handleSearchResults);
const searchResultsContainer = document.querySelector('.gsc-results');
if (searchResultsContainer) {
observer.observe(searchResultsContainer, {
childList: true,
subtree: true
});
} else {
console.log('No Results.');
}
};
Instala esta devolución de llamada en window.__gcse:
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
rendered: myWebResultsRenderedCallback,
},
}; <script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>Más ejemplos de devoluciones de llamada
Puedes encontrar ejemplos adicionales de devoluciones de llamada en el documento More Callback Examples.
Propiedades de promoción y resultado
Con la notación de JSDoc, estas son las propiedades de los objetos promotion y result. Aquí, enumeramos todas las propiedades que podrían estar presentes. La presencia de muchas de las propiedades depende de los detalles de la promoción o del resultado de la búsqueda.
{
content: string,
image: {
height: number,
url: string,
width: number,
},
title: string,
url: string,
visibleUrl: string,
}{
content: string,
contentNoFormatting: string,
contextUrl: string, // For image search results only
fileFormat: string,
image: { // For image search reseults only
height: number,
url: string,
width: number,
},
perResultLabels: !Array<{
anchor: string,
label: string,
labelWithOp: string,
}>,
richSnippet: !Array<!Object>, // For web search results only
thumbnailImage: {
height: number,
url: string,
width: number,
},
title: string,
titleNoFormatting: string,
url: string,
visibleUrl: string,
}richSnippet en results tiene el tipo flexible de un array de objetos. Los valores de las entradas de este array se controlan con los datos estructurados que se encuentran en la página web para cada resultado de la búsqueda. Por ejemplo, un sitio web de opiniones podría incluir datos estructurados que agreguen esta entrada de array a richSnippet:
'review': {
'ratingstars': '3.0',
'ratingcount': '1024',
},API de Programmable Search Element Control (V2)
El objeto google.search.cse.element publica las siguientes funciones estáticas:
| Función | Descripción | ||||||
|---|---|---|---|---|---|---|---|
.render(componentConfig, opt_componentConfig) |
Renderiza un elemento de búsqueda.
Parámetros
|
||||||
.go(opt_container) |
Renderiza todas las etiquetas o clases de Search Element en el contenedor especificado.
Parámetros
|
||||||
.getElement(gname) |
Obtiene el objeto del elemento por gname. Si no se encuentra, devuelve un valor nulo.
El objeto
El siguiente código ejecuta la búsqueda "noticias" en el elemento de búsqueda "element1": var element = google.search.cse.element.getElement('element1'); element.execute('news'); |
||||||
.getAllElements() |
Devuelve un mapa de todos los objetos de elementos creados correctamente, con la clave gname. |