web-dev-qa-db-fra.com

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

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?

18
Mołot

Finder le module 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 Finder , 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.

enter image description here

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 Noeud: Body

17
Bala

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

En utilisant le module Views Field View , vous pouvez incorporer une vue dans une autre vue, et cela 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).

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 zone de contenu, nous avons environ 7 à 8 blocs d'affichage 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 de vue.
  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.

3
dhrubaj

Il y a aussi une autre façon de le faire: 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 toujours la peine d'être mentionné.

3
32i