Recherche multi-critères sur des champs CCK

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

je suis tout débutant sur Drupal. Je le connais depuis quelques jours seulement. Cela dit, j'apprécie beaucoup l'outil, il me parait avoir un énorme potentiel.
Bref, je me heurte à un os : quand je crée un type de contenu avec CCK, un des besoins qui me semble les plus important, est la possibilité pour les utilisateurs de pouvoir faire des recherches multi-critères sur ces nouveaux champs.

Dans ce sens, j'ai trouvé plusieurs choses possibles avec Drupal, mais rien qui ne me paraisse satisfaisant (cf. image jointe) :

  1. Module Finder : intéressant, mais trop simple à mon goût. Il mériterait quelques "sous-modules" supplémentaires, pour permettre des recherches de dates, de nombre, pour gérer des opérateurs (contient ..., supérieur à ..., compris entre ... et ..., etc.). De plus, il me semble dommage de devoir
  2. Filtes exposés, avec Views : intéressant, mais peu ergonomique, on voit bien qu'ils s'agit plus de "filtres" de recherche, que vraiment de champs de recherche multi-critères. Manque par exemple un date picker pour une recherche de date. Pas de possibilités à priori de mettre des cases à cocher ou radio boutons, etc.
  3. Module FieldFinder. Prometteur, mais encore instable et assez limité.

Idéalement, j'imaginerai un mélange entre les trois :
un module capable de générer un formulaire de recherche avancée sur la base d'une view (un champ de recherche pour chaque champ affiché dans une vue). Ce formulaire généré formant une base pouvant être éditer, pour permettre d'indiquer le format de saisie, le type de recherche (et, ou, commence par ..;, etc.), s'il s'agit d'un champ de recherche avancée ou de recherche simple, etc.

Vous confirmez que mon idéal, il n'existe pas, et que les trois trucs que j'ai testé sont les seuls qui peuvent correspondre ?

Fichier attachéTaille
Icône image recherche-multicritères-drupal.png25.51 Ko
Version de Drupal : 

As-tu testé Faceted Search et/ou Apache SOLR (plus compliqué à installer), ayant leurs sous-modules).

Remarque complémentaire : la version de développement de Finder permet aussi de rechercher sur plusieurs champs à la fois. Ce qui est d'un intérêt non négligeable.

Hello
La question m'intéresse également. Findfinder est effectivement prometteur mais je pense que son développement est stoppé (unique version dispo, une dev datant de fin 2008).

Le module finder permet aussi cela mais effectivement je ne l'ai pas creusé car j'aimerai éviter d'utiliser view sur mon site (voir l'article de Yoran à ce propos).

Bref si quelqu'un a du nouveau à ce sujet je suis preneur. Je vous tiendrais au courant de mes propres avancées.

Je ne suis pas d'accord avec toi, mais bon après chacun son point de vue (sans mauvais jeu de mot).

View est un super module, mais sur un site destiné à gérer un fort trafic il semble qu'il vaille mieux l'éviter.

On peut tout à fait sans passer comme le démontre l'article de Yoran que je cite plus haut. Après cela demande de mettre un peu les mains dans l'API de Drupal, mais en ce qui me concerne j'adore ça.

Enfin je t'invite tout de même à lire l'article en question, il est fort instructif.

C'est sûr que Views n'est pas obligatoire : si tu veux faire toutes les requêtes et les affichages à la main, c'est tout à fait possible et il faut en effet une bonne connaissance ès Drupal. Je disais juste en exagérant un peu que Drupal a fait sa réputation notamment sur Views qui permet une flexibilité incroyable et simple pour l'affichage de tout et même n'importe quoi.

Sinon, en effet, cet article est intéressant, cependant, il ne me paraît plus être à la page, puisque :
- Views dispose désormais d'un système de cache (même de double cache : cache des paramètres de la vue, et cache de la vue en elle-même), aussi bien pour les utilisateurs authentifiés qu'anonymes.
- Il suffit de bien utiliser des datestamp, en effet.

Bref, se priver de Views, cela me semble être un peu se priver d'une partie de ce qui fait la force de Drupal...

Hello

Bon, je vais regarder à nouveau du côté de view voir son système de cache.

Après je ne pense pas me priver de view sur tous mes projets drupal, mais en ce moment je suis sur un site qui devrait (c'est le but en tout cas) générer pas mal de trafic, et surtout être très sollicitant en requêtes sql, d'où mon inquiétude après la lecture de cet article et plusieurs avis sur ce forum.

Bon on arrête là la déviation de ce topic ;-) !

Du coup je vais me pencher un peu plus sur finder.

Merci pour cet échange

Hello
Pour ma part j'ai développé un module custom qui marche assez bien. Malheureusement et c'est là où le bât blesse, c'était pour un client pressé, donc je l'ai codé au plus vite et il est très spécifique.
Par contre je pense que la méthode peut être reprise.
Si ça t'intéresse je peux (pas dans l'immédiat car là j'ai pas de chose à gérer) te donner deux trois pistes.

Mais effectivement depuis, ça a du évoluer... notamment view qui a largement optimisé ces performance et du coup l'usage de finder est à mon avis une bonne solution
A+

Merci de ta réponse.
je vais tester finder avec view pour voir si ca peut fonctionner comme je le souhaite.
Autrement je vais voir si avec un formulaire perso et l'utilisation des arguments de view, ca peut le faire.
Quand tu as le temps, si tu peut m'indiqué la méthode que tu as utilisé avec ton module.Comme ca je pourrai voir si je fait aussi un module perso.

a+