Forme de recherche dans drupal

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 voudrais savoir si c'est possible de personnaliser le module de recherche de drupal pour avoir une style de recherche comme dans http://www.nantes-tourisme.com ?

Sinon, comment faire?

Fichier attachéTaille
Icône image search.jpg28.24 Ko
Icône image search.gif36.8 Ko
Version de Drupal : 

Oui. Par défaut, le moteur de recherche de Drupal permet de filtrer selon les critères suivants :

  • mots clés full-text (opérateurs "contenant" ou "ne contenant pas")
  • type de contenu
  • catégories

Donc, il est possible de construire une feuille de rechercher personnalisée ressemblant bcp à celle que vous indiquez. Cela demandera un peu de travail, mais cela me semble tout à fait réalisable.

Damien

Le hook_search() permet aux modules de fournir des données pour la recherche. A priori, ce que vous cherchez n'est pas là.

Vous cherchez plutôt à définir une feuille de recherche personnalisée, sous le mode de ce qui est fait dans search_form() et node_alter_form() (cette dernière fonction ajoutant les champs de recherche avancés pour les noeuds).

Cela dit, il est certainement possible de simplement créer une fonction de thème pour la feuille définie par search_form(). Pour plus d'informations, le Form API Quickstart Guide peut bien aider.

Damien

Dans node_form_alter

    // Taxonomy box:
    if ($taxonomy = module_invoke('taxonomy', 'form_all', 1)) {
      $form['advanced']['category'] = array(
        '#type' => 'select',
        '#title' => t('Only in the category(s)'),
        '#prefix' => '<div class="criterion">',
        '#size' => 10,
        '#suffix' => '</div>',
        '#options' => $taxonomy,
        '#multiple' => TRUE,
      );
    }

Ceci semble la solution mais comment limiter le $taxonomy si je veux seulement mettre les categories d'hotel puis de restaurant?

Si je ne limite pas, les $taxonomy du forum module risque aussi d'afficher dans le select.

En fait, je veux créer une formulaire de recherche comme dans le site que je viens de citer en haut.

Comme ICI

En fait le module Views est une interface graphique qui te permet relativement simplement d'effectuer des requêtes sur la base de données en mettant en place des filtres.
Mais surtout, les filtres peuvent être exposés, cela veut dire que tes visiteurs peuvent eux-même choisir les critères de filtrage. En bref, Views peut te faire un moteur de recherche avancée sur mesure.

Jette un oeil ici pour un exemple rapide.

N'hésite pas à consacrer ton temps et tes efforts sur ce module, il est IN.DIS.PEN.SABLE !