¿Cómo combinar vistas expuestas filtro con búsqueda?

18

Mi cliente me pidió un solo campo, que funcionaría de 2 maneras:

  • Filtro de autocompletar basado en taxonomía.
  • Si el visitante del sitio ingresa algo que no está en taxonomía, se debe realizar una búsqueda de texto completo en el cuerpo del contenido y se debe mostrar el mensaje de información apropiado.

De esa manera, si el usuario ingresa el nombre de la categoría, obtendrá una lista de los nodos seleccionados, y en todo caso, al menos obtendrá algo de contenido.

Por separado, es fácil. Pero, ¿cómo combinar estos comportamientos en un campo?

Mołot
fuente
1
Por separado, es fácil, ¿con qué módulo trabaja para completar automáticamente según la taxonomía? Para mí, el truco será un pequeño código javascript que verificará si no hay resultados, cambie la acción del botón de envío para que redirija a / search / yourkeywordsearch
sel_space

Respuestas:

17

El módulo Finder cumplirá exactamente con sus requisitos. Puede seleccionar el término de taxonomía, así como el título del nodo, el cuerpo, los campos, etc. para realizar la búsqueda.

Hay muchas formas de reunir la funcionalidad del buscador para obtener el tipo de formulario de búsqueda que necesita. También hay muchos ganchos y funciones de tema que permiten la personalización completa de la salida del buscador.

Se utiliza para estos fines:

As a search tool to find a group of nodes or users.
As a way to navigate to a specific node or user page that matches criteria.
As an alternative to exposed filters for a Views module display.

Consulte la siguiente captura de pantalla. En el campo del buscador , puede elegir términos de taxonomía, así como el cuerpo del nodo para realizar la búsqueda en el campo expuesto de autocompletar, incluso puede realizar búsquedas de palabras clave múltiples separadas por comas. Lea la documentación del Finder para más información.

ingrese la descripción de la imagen aquí

Una vez que haya agregado el elemento, puede seleccionar los campos del buscador de la lista, mantenga presionada la tecla

Tecla Ctrl para seleccionar el término de taxonomía y el nodo: cuerpo

Bala
fuente
Es un poco viejo y necesita co-mantenedores, pero parece que satisface todas mis necesidades. Tendré que probarlo, pero hasta ahora parece ser la respuesta perfecta para mi caso de uso.
Mołot
Parece que funciona. Necesitaré ajustarlo un poco, pero puede hacer el trabajo.
Mołot
3

Estoy escribiendo sin probar, pero tengo la sensación de que puede usarlo al menos como punto de partida.

Usando el módulo Vistas del campo Vista , puede incrustar una vista en otra vista, y también le permite pasar un filtro contextual a la vista incrustada.

En su caso, crearía solo otra vista que tenga un filtro contextual que busque el filtro dado. No estoy seguro sobre ese punto, si puede hacer una búsqueda a través de filtros contextuales, pero he visto algunas opciones como 'Buscar: Término', etc.

Dicho esto, si puedes lograr este primer paso de todos modos, el resto es relativamente simple.

En su vista original, agrega un 'Comportamiento sin resultados' en la sección de opciones avanzadas y agrega un 'Global: Vista (vista del campo Vistas)' y selecciona la vista que creó anteriormente, y pasa el token para el filtro expuesto como filtro contextual a la vista incrustada (puede encontrar los tokens en la lista para los patrones de reemplazo).

Елин Й.
fuente
1
Idea interesante pero no pude hacer que funcione. Mucha configuración y luego Bala publicó un módulo listo y perdí mi corazón.
Mołot
Sí, no sabía sobre el módulo Finder . Creo que también lo usaré en mis proyectos. Me alegraría que nos lo hiciera saber con un comentario, si Finder hace lo que espera.
Елин Й.
3

He pasado por las discusiones anteriores y posiblemente el siguiente escenario pueda abordar la publicación '¿Cómo combinar vistas expuestas filtro con búsqueda?'. La implementación requerirá una codificación personalizada.

  1. Considere la url http://www.seedandspark.com/studio .
  2. Aquí, en el lado izquierdo, tiene un formulario de búsqueda. Este es un formulario personalizado ( form_id = 'sns_studio_form_filter').
  3. En la región de contenido, tenemos alrededor de 7-8 bloques de visualización y todos generan información dinámica (solo para usuarios anónimos de 3 bloques)
  4. Ahora, tenemos filtros expuestos habilitados con cada bloque de vista.
  5. Hemos mantenido esos filtros expuestos ocultos a la vista
  6. Hemos mantenido una nota de las estructuras de URL cuando usamos ver filtros expuestos
  7. En nuestro controlador de envío de formularios personalizados, tomamos información de los campos del formulario personalizado y generamos la url similar a la que notamos en el paso 6. Y, finalmente, redirigimos a esa url. Será así en el controlador de envío ::

    $form_state ['redirect'] = array(
      $path, 
      array(
        'query' => $params // $params is the url
      )
    );
    drupal_redirect_form( $form_state );

Entonces, ahora que se ejecuta el paso 7, todos los bloques de vista se filtrarán según los criterios de filtro que haya establecido.

Espero eso ayude.

dhrubaj
fuente
3

También hay otra forma de hacerlo: puede probar el módulo Concat Field . Básicamente agrega el campo a los tipos de contenido, y luego puede usar el filtro por este campo como búsqueda.

Es bastante similar a Finder, estoy de acuerdo, pero creo que aún vale la pena mencionarlo.

32i
fuente