Comment combiner le filtre des vues exposées avec la recherche?

18

Mon client m'a demandé un seul champ, cela fonctionnerait de 2 façons:

  • Filtre de saisie semi-automatique basé sur la taxonomie.
  • Si le visiteur du site saisit quelque chose qui n'est pas dans la taxonomie, la recherche en texte intégral doit être effectuée sur le corps du contenu et un message d'information approprié doit être affiché.

De cette façon, si l'utilisateur entre le nom de la catégorie, il obtiendra la liste des nœuds sélectionnés à la main, et au moins, il obtiendra au moins du contenu.

Séparément, c'est facile. Mais comment combiner ces comportements dans un même domaine?

Mołot
la source
1
Par ailleurs, c'est facile, avec quel module vous travaillez pour effectuer la saisie automatique en fonction de la taxonomie? Pour moi, l'astuce sera un petit code javascript qui vérifiera s'il n'y a pas de résultat, modifiez l'action du bouton de soumission afin qu'elle redirige vers / search / yourkeywordsearch
sel_space

Réponses:

17

Le module Finder répondra exactement à vos besoins. Vous pouvez sélectionner le terme de taxonomie ainsi que le titre du nœud, le corps, les champs, etc. pour effectuer la recherche.

Il existe de nombreuses façons de rassembler les fonctionnalités du Finder pour obtenir le type de formulaire de recherche dont vous avez besoin. Il existe également de nombreux crochets et fonctions de thème permettant une personnalisation complète de la sortie du Finder.

Il est utilisé à ces fins:

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.

Voir la capture d'écran ci-dessous. Dans le champ de recherche, vous pouvez choisir les termes de taxonomie ainsi que le corps du nœud pour effectuer la recherche dans le champ exposé à saisie automatique, même vous pouvez effectuer plusieurs recherches par mot-clé séparées par une virgule. Lisez la documentation du Finder pour plus d'informations.

entrez la description de l'image ici

Une fois que vous avez ajouté l'élément, vous pouvez sélectionner les champs du Finder dans la liste, maintenez

Touche Ctrl pour sélectionner le terme de taxonomie ainsi que Node: Body

Bala
la source
Il est un peu vieux et a besoin de co-mainteneurs, mais il semble qu'il réponde à tous mes besoins. Il faudra le tester, mais jusqu'à présent, cela semble être la réponse parfaite à mon cas d'utilisation.
Mołot
Semble que cela fonctionne. J'aurai besoin de le régler un peu, mais il peut faire le travail.
Mołot
3

J'écris sans tester mais j'ai le sentiment que vous pouvez l'utiliser au moins comme point de départ.

À l'aide du module Vues Champ Vue , vous pouvez incorporer une vue dans une autre vue, et il vous permet également de passer un filtre contextuel à la vue intégrée.

Dans votre cas, je créerais juste une autre vue qui a un filtre contextuel qui recherche le filtre donné. Je ne suis pas sûr sur ce point, si vous pouvez faire une recherche à travers des filtres contextuels, mais j'ai vu quelques options comme 'Search: Term' etc.

Cela dit, si vous pouvez de toute façon réaliser cette première étape, le reste est relativement simple.

Dans votre vue d'origine, vous ajoutez un «comportement Aucun résultat» dans la section des options avancées, et ajoutez un «Global: Vue (vue du champ Vues)» et sélectionnez la vue que vous avez créée précédemment, et passez le jeton pour le filtre exposé en tant que filtre contextuel à la vue intégrée (vous pouvez trouver les jetons dans la liste des modèles de remplacement).

Елин Й.
la source
1
Idée intéressante mais je n'ai pas pu la faire fonctionner. Beaucoup de configuration, puis Bala a posté un module prêt à l'emploi et j'ai perdu mon cœur.
Mołot
Oui, je ne connaissais pas le module Finder . Je pense que je vais également l'utiliser dans mes projets. Je serais ravi que vous nous fassiez part d'un commentaire, si Finder fait ce que vous attendez.
Елин Й.
3

J'ai parcouru les discussions ci-dessus et peut-être que le scénario ci-dessous peut aborder le post `` Comment combiner les vues exposées avec la recherche? ''. L'implémentation nécessitera un codage personnalisé.

  1. Considérez l'url http://www.seedandspark.com/studio .
  2. Ici, sur le côté gauche, vous avez un formulaire de recherche. Il s'agit d'un formulaire personnalisé ( form_id = 'sns_studio_form_filter').
  3. Sur la région de contenu, nous avons environ 7 à 8 blocs de vue et générons tous des informations dynamiques (pour les utilisateurs anonymes, 3 blocs uniquement)
  4. Maintenant, nous avons des filtres exposés activés avec chaque bloc d'affichage.
  5. Nous avons gardé ces filtres exposés à l'abri des regards
  6. Nous avons pris note des structures d'url lorsque nous utilisons des filtres exposés
  7. Dans notre gestionnaire de soumission de formulaire personnalisé, nous prenons des informations dans les champs du formulaire personnalisé et générons l'url similaire comme nous l'avons noté à l'étape 6. Enfin, nous redirigeons vers cette URL. Ce sera comme ça dans le gestionnaire de soumission:

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

Ainsi, une fois l'étape 7 exécutée, tous les blocs de vue seront filtrés en fonction des critères de filtre que vous avez définis.

J'espère que cela aide.

dhrubaj
la source
3

Il existe également une autre façon de procéder: vous pouvez essayer le module Concat Field . Vous ajoutez essentiellement le champ aux types de contenu, puis vous pouvez utiliser le filtre par ce champ comme recherche.

Il est assez similaire à Finder, je suis d'accord, mais je pense qu'il vaut quand même la peine d'être mentionné.

32i
la source