¿Cómo puedo restringir los resultados de una búsqueda predeterminada en Drupal 7, para traer solo los nodos que están en el idioma actual?
Mi sitio web tiene un conmutador de tres idiomas; el usuario elige qué idioma quiere usar cuando ve el sitio. Si busca algo, la página de resultados traerá resultados de otros idiomas. Hoy solo tengo 3 idiomas habilitados, pero planeamos expandir esto a 6 o más.
Hay una forma realmente elegante de hacer esto usando el aparentemente indocumentado
hook_query_node_access_alter()
:Nota: este código se basa 100% en el excelente módulo de configuración de búsqueda .
Lenguaje de usuario vs contenido
Algunos sitios pueden tener la detección de idioma configurada para mostrar la interfaz en el idioma preferido del usuario, mientras que el contenido de la página se muestra en función de la URL o el idioma del contenido.
En ese caso, considere reemplazar
con
fuente
Tenía los mismos requisitos, y utilicé el módulo de búsqueda personalizada , que incluye un submódulo llamado Internacionalización de búsqueda personalizada : " buscar contenido de todo o solo el idioma actual, y todo el manejo de la traducción de etiquetas y selectores " (tenga en cuenta que este módulo también proporciona varios otros útiles características como bloques de búsqueda personalizados). Funciona perfectamente.
fuente
No estoy seguro de que el núcleo de búsqueda lo soporte.
Veo el proyecto i18nluceneapi pero no es compatible con la versión 7 en este momento.
Estoy usando searchapi y creo facetas Language :). Se puede usar para su caso, crear facetas y filtro predeterminado en la página de búsqueda.
fuente
Puede usar el módulo de la suite de visualización donde puede elegir la opción Modo de visualización-> Idioma que proporciona los resultados de búsqueda en el idioma actual que está en el idioma actual del sitio.
fuente