Este paquete proporciona una interfaz uniforme para búsqueda de texto completo con varios motores de búsqueda y un controlador con plantillas twig para representar formularios y resultados de búsqueda.
Nota: Estás viendo la versión 2 de este paquete, que experimentó grandes cambios en comparación con la versión 1.
Este paquete de búsqueda simplifica la adición de búsquedas a su sitio.
Se proporcionan para usted:
Por ahora, la búsqueda de sitios de Google es compatible de forma inmediata. Hay una implementación que utiliza la API REST de Google y una implementación que utiliza la función Elemento de búsqueda personalizado que carga la búsqueda solo con javascript en la interfaz.
Se aceptan contribuciones para otros servicios.
Instale el paquete con composer require liip/search-bundle
.
Incluya el paquete en app/Kernel.php.
Agregue su motor de búsqueda preferido en app/config/config.yml:
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
O si utilizas el buscador personalizado javascript de Google:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
Puede mostrar un cuadro de búsqueda en cualquier lugar de la página con la función twig liip_search_box:
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
Puedes personalizar el cuadro de búsqueda con estos parámetros:
<form>
.Crea una ruta para la acción de búsqueda. Lo más fácil es simplemente usar el archivo route.xml proporcionado desde el archivo route.xml de su proyecto principal:
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
El valor predeterminado es la URL /search
. Si desea una ruta diferente, use la opción prefix
al incluir la ruta o configure su propia ruta usando %liip_search.controller.search_action%
como valor predeterminado para _controller
.
Las plantillas de resultados de búsqueda proporcionadas por este paquete amplían la plantilla LiipSearchBundle::layout.html.twig
. Para integrarse con el resto de su sitio, tiene dos opciones:
app/Resources/LiipSearchBundle/views/layout.html.twig
y haga que extienda su diseño base, colocando un bloque liip_search_content
donde desee los resultados de la búsqueda.app/Resources/LiipSearchBundle/views/Search/search.html.twig
y cree su propia estructura de plantillas; debería poder use
la plantilla search_results.twig.html
para obtener el bloque liip_search_content
.Por supuesto, también puedes anular cualquiera de las plantillas para personalizar lo que deben hacer. Consulte http://symfony.com/doc/master/book/templating.html#overriding-bundle-templates
Esta es la referencia completa de lo que puedes configurar bajo la clave liip_search
:
search_factory
cadena , valor predeterminado: nulo
Especifique un servicio personalizado que implemente LiipSearchBundleSearchFactoryInterface
. El controlador utilizará este servicio para crear instancias Pagerfanta
para manejar la búsqueda.
Si configura uno de los servicios del motor de búsqueda, no necesita configurar este campo.
search_route
cadena , valor predeterminado: liip_search
El nombre de la ruta que manejará las solicitudes de búsqueda enviadas.
restrict_language
booleano , valor predeterminado: falso
Cambie esto a verdadero si desea pedirle al servicio de búsqueda que restrinja los resultados al idioma de la solicitud.
Configurar cualquiera de estas opciones habilita el servicio del motor de búsqueda de Google. Se encuentran en clients.google_rest
.
api_key
cadena , requerida
Tu clave API de Google
search_key
cadena|matriz , requerida
La clave que identifica tu Motor de Búsqueda de Google. Puede ser una lista de claves indexadas por configuración regional para usar diferentes motores por configuración regional. Si controla las configuraciones regionales a través de motores de búsqueda separados, no necesita establecer restrict_language
en verdadero a menos que desee que sus motores de búsqueda personalizados reciban una restricción de idioma adicional.
api_url
cadena , valor predeterminado: https://www.googleapis.com/customsearch/v1
La URL de la API de búsqueda de Google para llamadas REST
restrict_to_site
cadena , valor predeterminado: nulo
Si se deja vacío, se buscan todos los sitios configurados para los motores de búsqueda de Google. Establezca un dominio para limitarlo a ese dominio.
La configuración de esta sección activa un controlador diferente que representa el fragmento de Javascript para habilitar la búsqueda CSE. Esta configuración se encuentra en clients.google_cse
.
cse_id
cadena|matriz , requerida
La clave que identifica su motor de búsqueda personalizado de Google. Puede ser una lista de claves indexadas por configuración regional para usar diferentes motores por configuración regional. CSE no admite restrict_language
, por lo que diferentes motores de búsqueda por idioma son su única opción para restringir el idioma de los resultados de búsqueda.
Si recibe SearchException
que dice "Se recibió una respuesta vacía de la API del motor de búsqueda de Google", intente copiar la URL que se genera en un navegador. Debería obtener una respuesta JSON, pero probablemente tendrá un estado de error.
Si obtienes un estado 500 con un mensaje vacío, lo más probable es que necesites renovar el motor de búsqueda en el panel de administración de Google.
Implemente LiipSearchBundleSearchInterface
y configúrelo como un servicio. Luego configure liip_search.search_client
con ese nombre de servicio.