Recherche avancée sous SPIP

Ajoutez un formulaire de recherche permettant de se limiter à une rubrique, à un mot clé, à une date... affichage Google_like...

Présentation

Vous avez déjà remarqué l’option recherche avancée dans votre moteur de recherche favori... elle vous permet de limiter votre recherche à un certain nombre d’options... Malheureusement, votre SPIP en est dépourvu en standard. Cette contribution va remédier à cet état de fait.

Comment ça marche ?

La recherche de SPIP

Tout d’abord, remarquons que la recherche de SPIP (fichier dist/rechercher.html) est basé sur une boucle :

<BOUCLE_articles(ARTICLES) {recherche} {par points} {inverse} {pagination}>

Restreindre la zone de recherche

Il suffit donc d’y ajouter un argument rubrique pour limiter la recherche à la rubrique en question :

<BOUCLE_articles(ARTICLES){recherche}{par points}{inverse}{rubrique?}{pagination}>

Le « ? » permet de conserver le fonctionnement du squelette d’origine (si aucune rubrique n’est précisée). En fait, on utilisera plutôt {branche?} pour une recherche dans la rubrique et ses sous-rubriques.

Vous pouvez faire l’essai : copier le fichier de la dist dans votre répertoire « squelettes », modifiez le, et lancez une recherche en ajoutant à la fin de la ligne &id_rubrique=1 pour vous limiter à la rubrique 1.

Usage de mot clef

De la même manière, on peut restreindre la recherche à un mot clé que l’on précisera lors de l’appel : {id_mot?}

Selon la durée

Maintenant, cherchons à introduire une condition sur la durée : c’est le critère age qui intervient, mais {age?} ne marchera pas, à moins que l’on ne veuille une date en particulier. On cherche plutôt à avoir tous les articles parus après une date donnée, donc quelque chose comme {age<#ENV{depuis}}depuis a été passé en argument dans la recherche. Mais on perd le comportement initial du squelette (si on ne précise pas l’age en question). J’ai donc choisis une valeur par défaut : {age<#ENV{depuis,1E100}} en espérant que personne n’aura écrit un article il y a plus de 1E100 jours ;-)

Par points

Enfin, notons que la recherche est triée par points, mais que l’on peut assez facilement utiliser un tri différent : {par #ENV{tri, points}} en utilisant une variable passée dans l’environnement.

On peut donc facilement ajouter quelques critères à sa recherche SPIP.

Il reste à définir un formulaire pour envoyer la requête facilement...

Un formulaire de recherche avancée

Le formulaire en question est utilisé en lieu et place du formulaire standard dans le squelette de la recherche, à condition que l’option avancee=1 lui ait été envoyée. Il se présente ainsi :

Formulaire de recherche avancée

Il a été placé dans le fichier formulaires/recherche-avancee.html afin que vous puissiez le modifier plus facilement et introduire les spécificités propres à votre site, car suivant la configuration de celui-ci, le nombre de rubriques ou de mots clé, vous aurez peut-être à le modifier, au risque d’avoir des menus à rallonge ou des critères qui ne vous satisferont pas.

Et pour y accéder plus facilement, j’ai placé un lien dans le fichier formulaires/recherche.html de la dist.

Finalisation

Mais que serait une bonne recherche sans une bonne présentation ? Pour cela, j’y ai introduit un filtre google_like (voir Google Like et Google Like II) et j’ai transformé les points SPIP en pourcentage plus lisible pour le commun des mortels.

Il ne restait plus qu’à ajouter deux image pour donner un peu de couleurs, faire un fichier de style pour une meilleur intégration dans votre site, mettre une icône dans la barre de recherche standard, un fichier de langue pour les traductions et à empaqueter le tout dans un plugin pour faciliter l’installation...

Et voilà le résultat ...

Remerciements

Merci à J-Ph Guihard pour la validation du code html, css et le passage en SPIP v2.xx, suite aux remarques sur le forum


Dernière mise à jour :
-  04/10/2010 Validation html et css, mise à jour du code pour SPIP 2.xx par J-Ph Guihard
-  19/01/2009 Ajout d’options sur les mots-clés (par groupe ou sans le mot clé...)
-  04/05/2008 Bug dans le fichier recherche_avancee_fonctions.php
-  05/09/2007 Problème d’affichage en version 1.9.3 dev
-  29/08/2007 Gestion des Résultats dans la langue de la requête suite aux remarques d’Abelass.
-  13/08/2007 Première version (1.9.2b)

Attention, ce plugin reprend et modifie les fichiers recherche.html et formulaires/recherche.html de la dist, veillez donc à ne pas les avoir déjà surchargés dans votre répertoire « squelettes »...

Discussion

50 discussions

  • 2

    Bonjour,

    Ce plugin est-il définitivement mort ?
    C’est vraiment dommage de ne pouvoir l’utiliser sur les versions récentes de SPIP.

    • Bonjour,

      Je vais aussi avoir besoin de cette fonctionnalité. Savez vous si ce plugin marche en spip 3 ? Avez vous essayé ? Y’a t’il des chances ou absolument aucune ?...

      Merci !

    • le plugin marche en spip3, il sufffit de modifier le fichier xml pour mettre la bonne version

      Par contre, je n’arrive pas à introduire le résultat de certaines rubriques.

      J’ai les rubriques separes en 2 morceaux pour l’exemple

      la boucle surrub pour les rubriques 1,2 et 3

      Je l’ai copié en l’appelant surville pour les rubriques 4,5 et 6. L’affichage de la recherche avancée fonctionne, j’ai bien les lignes

      limiter à la rubrique
      limiter à la ville

      mais dans mon résultat de recherche, seul 1 des 2 fonctionnent, l’autre le surville m’affiche tous les resultats quelque soit ma recherche.

      <select name="id_rubrique" >
      				<option value="" style="color:silver"><:rechercheavancee:allrub:></option>
      				<BOUCLE_surrub(RUBRIQUES){id_parent !IN 9,19,35,67,68}{id_rubrique !IN 9,19,35,67,68}>
      					<option value="#ID_RUBRIQUE" [(#ENV{id_rubrique}|=={#ID_RUBRIQUE}?{"SELECTED"})]>#TITRE </option>
      				</BOUCLE_surrub>
      			</select>
      		</td></tr>
          </B_surrub>
      	
      	<!-- Par ville -->
          <B_surville>
          <tr><td>
      			<label><:rechercheavancee:limiter_ville:></label>
      		</td><td>
      			<select name="id_ville" >
      				<option value="" style="color:silver"><:rechercheavancee:allrub:></option>
      				<BOUCLE_surville(RUBRIQUES){id_parent IN 9,19,35,67,68}>
      					<option value="#ID_RUBRIQUE" [(#ENV{id_ville}|=={#ID_RUBRIQUE}?{"SELECTED"})]>#TITRE </option>
      				</BOUCLE_surville>
      			</select>
      		</td></tr>
          </B_surville>

      si j’écris id_rubrique à la place de id_ville, c’est lui qui fonctionne mais non l’autre.

      Quelqu’un peut me débloquer svp ?

    Répondre à ce message

  • 4

    Bonjour,

    Ce plugin est-il publié sur la zone ? Je ne l’ai pas trouvé. J’aurais aimé y participer, notamment pour l’ajout d’une recherche par branches, dates et groupes de mots, voire pour le porter en SPIP 3.

    • Bonjour,

      Effectivement, le plugin n’est pas sur la zone. Vous pouvez le mettre si vous voulez.
      Prévenez-moi, je mettrai le lien dans l’article.

      @+

    • Hello, merci pour la réponse.
      Je veux bien mettre le plugin sur la zone, mais j’ai peur de ne pas être en mesure de distinguer le trunk de la branche stable et des éventuelles branches correspondant aux versions 1.9 et 2.0. En l’occurrence je n’ai pas réussi à visualiser à quoi correspondaient les version « recherche-avancee-4 » et « recherche-avancee-5 ». Peut-être qu’il serait préférable que ce soit vous même qui fassiez cette 1re opération ? Je suis dispo pour aider si besoin :-)

    • Bonjour,

      Ce qui change entre la 1.9 et la 2.x, c’est la possibilité en 2.x de faire recherche ? et donc de chercher sans entrer de chaine de recherche (on ne cherche alors que sur les critères) qui n’était pas disponible en 1.9. L’affichage de la page de recherche n’est pas exactement la même (ni les styles entre la -4 et la -5 qui sont d’anciennes versions).
      Le plus simple est de ne prendre que la version 2.xx et d’abandonner la 1.9 en l’état...

      Je verrai ce que je peux faire ce soir, ou demain...

      @+

    • J’ai mis le plugin sur la zone... (version pour SPIP v2)

      @+

    Répondre à ce message

  • 8
    Figoolu

    Bonjour,
    J’aimerai savoir s’il est possible de combiné le plugin recherche avancée avec le plugin champs extra.
    J’aimerai faire des champs de recherche spécifiques aux champs que je rajoute dans mes articles.
    Comment est-ce que je peux dire à mon moteur de recherche avancée d’aller chercher l’information dans ma table article ?

    • Bonjour,

      Le plugin utilise la recherche classique de SPIP mais je ne sûr qu’elle intègre les champs extra. Il faudrait demander sur le forum du plugin des champs extra.

      @+

    • Figoolu

      Merci pour cette réponse.
      Est-il possible de récupérer plusieurs valeurs pour un même champs avec la recherche avancée ?
      J’aimerai pouvoir récupérer « id_rubrique=4,9 » par exemple au lieu de « id_rubrique=4&id_rubrique=9 ».
      J’ai essayé à partir d’un tableau mais, j’ai peut-être fait une erreur, car ça ne marche pas.
      Si vous avez un conseil... Je suis tout ouïe^^

    • id_rubrique IN 4,9 devrait marcher ;-)

    • Figoolu

      Oui mais le problème, c’est que je ne veux pas que ce soit toujours les mêmes rubriques.
      C’est à l’internaute de choisir grâce au formulaire. Il sélectionne les rubriques qui l’intéresse et j’aimerai que les identifiants soient récupérer dans un tableau pour pouvoir être passé dans la recherche.

      En fait, j’ai fait en sorte, qu’il puisse choisir une sous-rubrique de chaque rubrique. Donc je peux choisir la sous rubrique 1(id=2) de ma rubrique 1 et la sous rubrique 1(id=4) de ma rubrique 2. Mais dans l’url, j’obtiens « id_rubrique=2&id_rubrique=4 » et seule la sous rubrique id=4 est prise en compte.
      Si je n’en choisi pas, j’obtiens « id_rubrique=2&id_rubrique= ». J’ai donc tous mes articles de toutes mes rubriques.

      Une idée pour résoudre ce problème ?

    • Bonjour,

      Vous devez changer les noms de vos champs (attributs name) car vous avez les même nom : id_rubrique, du coup la seconde écrase la première.
      Il faut en nommer une id_rub1 et l’autre id_rub2 (par exemple). Vous aurez alors dans l’url id_rub1=1&id_rub2=4, donc deux variables à récupérer.
      Ensuite, vous devrez les concaténer dans une liste dans la page appelée :

      #SET{sub, #ARRAY{1,[(#ENV{id_rub1,0})],2,[(#ENV{id_rub2,0})]}}

      Puis dans votre boucle il faut le critère qui utilise le tableau :

      <BOUCLE_a(ARTICLES){recherche?}{id_rubrique IN #GET{rub}> ... </BOUCLE_a>

      Si id_rub2 est vide, il cherche dans la rubrique 1 et dans la 0 (valeur par déffaut). Or la 0 n’existe pas donc il ne cherche que dans 1...

      Pour plus d’info, voir l’article sur la balise ARRAY : http://www.spip.net/fr_article4009.html

      @+

    • Figoolu

      Merci beaucoup pour cette réponse. Elle m’aide beaucoup mais ça ne marche pas encore.
      J’ai suivi tes conseils pour le code et je récupère bien un tableau avec mes identifiants dans la boucle article :
      AND ((articles.id_rubrique  IN (2,0,11))) (vu en debug).
      Mais le problème c’est que ma recherche prend en compte seulement le dernier critère (ici 11).
      Et donc si je ne renseigne pas une 3° rubrique (comme par exemple : AND ((articles.id_rubrique  IN (2,0,0)))) et bien ma recherche ne me renvoie rien du tout.
      As-tu encore un bon conseil à me donner ?

    • Bonjour,

      Je n’ai pas vraiment d’idée, le critère IN est justement fait pour cela... (voir http://www.spip.net/fr_article4010.html).
      Es-tu sûr d’avoir des réponse dans la rubrique 2 ?
      Essaye en inversant et en commençant par la rubrique 11...

      @+
      jmv

    • Figoolu

      C’EST BON !!!
      J’ai trouvé l’erreur ! En fait, mes articles se trouvaient dans la sous-sous-rubrique de ma sous-rubrique et c’est pour ça que je ne pouvais pas les afficher (puisque je demandais les articles de ma sous-rubrique).
      Merci beaucoup pour ton aide !
      Tu m’as permis de résoudre un gros problème qui m’empêchait d’avancer !

    Répondre à ce message

  • 3

    Petit problème à l’affichage. Lorsque l’on sélectionne une des deux options pas de soucis. En revanche, si je sélectionne les 2 options en pensant qu’il me restera les critères de l’un et l’autre cumulé (donc restriction) je me retrouve avec les résultats de l’un et les résultats de l’autre. Le tri n’est pas effectué.

    Par exemple obtenir la liste des campings (mot clé du groupe type) dans le 03 (mot clé du groupe département). J’obtiens la liste de tous les campings et de tous les logements dans le 03.

    Ma boucle d’affichage des articles :

    <BOUCLE_articles(ARTICLES) {recherche?}{!par #ENV{tri,points}} {!par date} {id_mot IN #ID_MOT1,#ID_MOT2} {id_groupe?} {id_mot != (#ENV{id_nomot})} {branche?} {pagination 7}{doublons} >
    <h3>#TITRE</h3> #TEXTE
    </BOUCLE_articles>

    Merci pour votre oeil éclairé :)

    Répondre à ce message

  • 2
    looping

    Bonjour,

    Tout d’abord bravo pour votre plugin.
    J’essaie de l’intégrer à mon site pour limiter la recherche à une rubrique (recherche d’emploi)
    je base mes entrées sur des groupes de mots clés et c’est bien utile.
    Par contre j’aimerais me passer des résultats google-like mais lorsque j’esssaie tout plante. Que dois-je enlever exactement dans les fichiers ?

    Merci de votre aide.

    • looping

      Désolée de vous réimportuner, mais pendant que j’y suis, je débute en spip et j’ai du mal à comprendre
      le terme « surcharger »...
      J’ai déjà mes propres css sur le site et donc j’ai fait comme vous l’indiquiez, copié une partie du code de votre « recherche.html » dans MON « squelette/recherche.html » et mis un de la recherche_avancée dans un squelette de mes rubriques.
      Le formulaire "recherche avancées apparait bien mais ma recherche générale
      n’est plus formatée comme avant et les résultats de la recherche avancée apparaissent sur la même page et débordent de mon cadre...
      Je ne suis pas assez calée pour modifier tout ça n’est-il pas possible que la recherche avancée soit présente uniquement pour ma rubrique et change pas le champ « rechercher » de la page d’accueil du site ?

      Merci encore beaucoup pour votre aide.

    • Bonjour,

      Pour supprimer l’effet google_like, il suffit de supprimer la ligne 27 de recherche_articles.html, ou de le remplacer par [(#INTRODUCTION)] si vous voulez un résumé de l’article.
      Si vous voulez limiter le choix à une seule rubrique, vous devez modifier le fichier formulaires/recherche_avancee.html. A la ligne 48, modifier la boucle pour n’avoir que votre rubrique : <BOUCLE_surrub(RUBRIQUES){id_rubrique=xx}>

      Sinon, la recherche avancée remplace la recherche générale de SPIP, il est donc normal que le formatage ne soit plus le même. A vous de voir dans vos css ce qui provoque le débordement pour le corriger.

      @+

    Répondre à ce message

  • 1

    Bonjour,
    Pour être complète, il faudrait que la recherche avancée permette également d’exclure certains résultats (mots ou mots-clés, rubriques, etc.) plutôt que de fonctionner seulement par restriction. Par exemple : actuellement on peut limiter une recherche aux rubriques sélectionnées, ce serait bien de pouvoir faire le contraire, soit chercher dans toutes les rubriques excepté celles sélectionnées. Est-ce envisageable ?
    Merci, Gef

    Répondre à ce message

  • 5

    Bonjour,

    J’ai développé un site internet d’utiliser le plugin « Recherche multi-critère par mots-clés »
    mais elle était incompatible nouvelles versions de SPIP et a vu la « Recherche avancée »
    comme une bonne solution.

    Donc je me demandais si vous pouviez m’aider, parce que je veux sur le mot-clé, au lieu il ya
    de lister tous les mots clés de tous les groupes de mots clés, séparés font
    par groupe et par où l’on peut choisir un mot clé à partir d’un groupe ou une combinaison
    mot-clé pour chaque groupe de mots-clés ? Quelqu’un at-il cette fois ?

    Merci !

    • Bonjour,

      L’affichage des mots clés se fait dans le formulaire de recherche (fichier formulaires/recherch_avancee.html). Il y a là une boucle (_surmot) qui « choisi » les mots-clés sur lesquels faire la recherche (dans le plugin, cette boucle affiche tous les mots-clés).
      Vous pouvez copier ce fichier dans votre répertoire squelettes/formulaires et modifier le comportement de la boucle pour afficher les mots-clés autrement.

      Par exemple pour limiter aux mots-clés des groupes 2 et 3 :

      <BOUCLE_surmot(MOTS){id_groupe IN 2,3}>
        <option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
      </BOUCLE_surmot>

      @+

    • et si vous avez trois groupes de mots-clés et de créer trois nouveaux champs au lieu d’un ? J’ai essayé d’ajouter deux fois plus et en ajoutant les mots limiter_mot id_groupe dans 1, 2 id_groupe IN IN id_groupe et 3, et est apparue dans le squelette que je veux, mais il ne fonctionne que le premier : (

          <B_surmot>
           <tr><td>
                              <label><BOUCLE_surmota1(GROUPES_MOTS){id_groupe IN 1}>#TITRE</BOUCLE_surmota1></label>
                      </td><td>
                              <select name="id_mot" ID="Select1">
                                      <Option value="" style="color:silver"><:rechercheavancee:all:></option>
                                      <BOUCLE_surmot(MOTS){id_groupe IN 1}>
                                              <Option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
                                      </BOUCLE_surmot>
                              </select>
                      </td></tr>
          </B_surmot>
      
      
          <B_surmot2>
           <tr><td>
                              <label><BOUCLE_surmota2(GROUPES_MOTS){id_groupe IN 2}>#TITRE</BOUCLE_surmota2></label>
                      </td><td>
                              <select name="id_mot" ID="Select">
                                      <Option value="" style="color:silver"><:rechercheavancee:all:></option>
                                      <BOUCLE_surmot2(MOTS){id_groupe IN 2}>
                                              <Option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
                                      </BOUCLE_surmot2>
                              </select>
                      </td></tr>
          </B_surmot2>
      
      
          <B_surmot3>
           <tr><td>
                              <label><BOUCLE_surmota3(GROUPES_MOTS){id_groupe IN 3}>#TITRE</BOUCLE_surmota3></label>
                      </td><td>
                              <select name="id_mot" ID="Select">
                                      <Option value="" style="color:silver"><:rechercheavancee:all:></option>
                                      <BOUCLE_surmot3(MOTS){id_groupe IN 3}>
                                              <Option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
                                      </BOUCLE_surmot3>
                              </select>
                      </td></tr>
          </B_surmot3>
    • Bonjour,

      Le problème est que les 3 mots-clés ont le même nom (name="id_mot" dans les select).
      Au final, un seul est envoyé à la page recherche.html.
      Vous devez avoir un nom pour chaque select afin de pouvoir les récupérer et modifier le fichier recherche.html et recherche_articles.html pour tenir compte de ces mots.
      Si vous avez 3 mots-clés (id_mot, id_mot2 et id_mot3), le code dans recherche_articles.html sera :

      <BOUCLE_articles(ARTICLES) {recherche?}{!par #ENV{tri,points}} {!par date} {age<(#ENV{depuis,1E100})} {id_mot IN #ID_MOT,#ID_MOT2,#ID_MOT3} {id_groupe?} {id_mot != (#ENV{id_nomot})} {branche?} {pagination 7} >

      ... avec le problème qu’il faut sélectionner au moins un mot-clé car le paramètre optionnel {id_mot?} ne marche plus (ou alors il faut faire un test dans recherche.html comme pour la gestion de la note_ponderee qui renvoie vers un squelette différent)...

      En espérant que cela peut vous être utile...

      @+

    • Il a travaillé, merci !

      est de changer le filtre generer_url_site par generer_url_entite sur la ligne 150 du fichier recherche.html

    Répondre à ce message

  • 2

    Bonjour et encore merci pour ce plugin !

    J’ai installé ce plugin avec le plugin Fulltext et cela marche du tonnerre !

    Cependant la présentation des résultats « Google Like » ne semble pas compatible avec les recherches booléennes. Par exemple sur la recherche « Il fait beau », il va présenter un extrait de l’article pour chaque mot demandé sans prendre en compte les guillemets ce qui peut troubler le visiteur.

    J’aurai besoin de présenter un seul extrait de l’article présentant la séquence entière demandée, mais je ne vois pas comment faire...

    En 2 mots : comment rendre compatible la présentation « Google Like » avec les opérateurs booléens du plugin « Fulltext » ?

    Merci beaucoup ! ^^

    • Bonjour,

      Désolé de répondre si tard (vacances de Noël oblige).
      La solution se trouve dans le fichier « recherche_avancee_fonctions.php ». Le reformatage dans la fonction recherche_avancee_google_like découpe la recherche : $qt = explode(" ", $query); et on surligne mot par mot...
      Il faudrait un découpage plus intelligent pour conserver les guillemets...

      @+

    • Merci pour cette réponse.

    Répondre à ce message

  • 1

    Bonjour,

    Super plugin ! Mais je fais fasse à un petit problème avec le filtre « google like » : tous les caractères spéciaux disparaissent (é|è|ê->e, ç->c, à->a...). Une solution, une idée ?

    Autre petit désagrément, si l’on clique sur le lien « recherche avancée » depuis le formulaire de recherche, la chaîne saisie dans le champ recherche n’est pas transmise à la page de résultat dans le formulaire de recherche avancée (paramètre recherche vide dans l’url « &recherche= »).

    • Bonjour,

      La recherche se fait (et s’affiche) sans accent... désolé...

      Si vous faite une recherche (normale) et qu’ensuite vous cliquez sur recherche avancée, la chaîne de recherche est conservée. Si vous cliquez sur recherche avancée c’est la page vierge de la recherche qui s’affiche.

      @+

    Répondre à ce message

  • 1

    Bonjour,

    J’ai déjà un peu travaillé avec SPIP mais je ne maitrise pas encore bien le langage. Je souhaiterai inclure dans mon site une rubrique qui serait uniquement composé de la recherche avancé, comme on voit dans marmiton.org par exemple, mais garder le « rechercher » simple sur le coté. Je pensais donc créer un article de forme spéciale : article_rechercheavance ( ça je sais faire ) et inclure le formulaire à l’intérieur de cet article, mais je ne sais pas comment faire ceci. Pouvez vous m’expliquer comment faire, ou m’indiquez une meilleure méthode pour réaliser ce projet ?

    Cordialement.

    • Bonjour,

      Il existe déjà une page dédiée à la recherche, c’est http://mon-site/spip.php?page=recherche&avancee=1. Il suffit de faire un lien dessus.
      Je ne vois pas trop l’intérêt d’une rubrique dédiée à la recherche mais bon... la solution est ici : http://www.spip.net/fr_article3445.html.
      Il vous suffit de créer un fichier rubrique=xx.html dans votre répertoire squelettes (où xx est le numéro de la rubrique de recherche) et d’y inclure la page de recherche avancée.
      Un truc comme cela doit marcher en v2 :

      <INCLURE{fond=recherche}{avancee=1}{env}>

      @+

    Répondre à ce message

  • 1

    Bonjour à tous,

    Je n’utilise pas ce plugin mais je sais pas trop où poser ma question... Je vous explique : j’ai un plugin Contacts et j’aimerais que lorsque l’utilisateur lance une recherche, elle se fasse aussi au sein de la table spip_contacts du plugin.

    Pour cela, j’ai utilisé plusieurs pipelines : rechercher_liste_des_champs, declarer_tables_objets_surnoms.

    J’ai également ajouter une boucle sur la table spip_contacts dans le squelette recherche.html :

    Contact #NOM_ORGANISATION

    Mais la recherche ne retourne rien. Pourtant je lance la recherche avec un nom de contact existant dans la base.

    Quelqu’un parmi vous aurait eu ce genre de problème ? Un nouvel objet éditorial avec une recherche dessus mais sans résultats...

    Je vous remercie.

    Répondre à ce message

  • 7

    Bonjour et merci pour ce plugin, je voudrais cependant y apporter une modification mais je n’y arrive pas mes compétences étant limitées sur le sujet.

    j’aurai besoin, pour un projet, d’ajouter une recherche, non pas sur la date de publication, mais sur la date de rédaction antérieur.

    Du coup, et comme les dates des documents en question peuvent être assez anciennes (1750 ou 1830, par exemple, les champs « 3 derniers mois » ou « l’année dernière » ne fonctionnent plus. Il faudrait, pour bien faire remplacer le menu déroulant par deux champs où l’on pourrait entrer deux dates afin de faire une recherche, par exemple, sur les articles écrits entre 1875 et 1879.

    Si quelqu’un a une piste vous me seriez d’un grand secours.
    Merci !

    • Bonjour,

      Dans le fichier formulaires/recherche-avancees.html,
      il faut définir deux champs à la place du menu déroulant qu’il y a ligne 30 à 39...

      <tr><td width=40%>
        <label>Entre</label>
      </td><td width=60%>
        <input type="text" class="forml" name="depuis" id="depuis" value="#DEPUIS"  />
        <input type="text" class="forml" name="jusqua" id="jusqua" value="#JUSQUA"  />
      </td></tr>

      Dans le fichier recherche_articles.html, il faut ajouter les critères qui exploitent ces champs :

       {date_redac>(#ENV{depuis,1000-01-01})} {date_redac<(#ENV{jusqua,3000-01-01})}

      en lieu et place de :
      {age<(#ENV{depuis,1E100})}

      Attention cependant à bien rentrer les dates...

      @+

    • Génial !
      Merci pour cette réponse extrêmement rapide !

      Le code que vous m’avez donné fonctionne à merveille.
      Cependant il faut entrer, dans les champs, la date complète au format « 3000-01-01 » pour que cela fonctionne.

      Je voudrais, si possible, lancer la recherche sur les années uniquement, mais je ne trouve pas comment faire. Auriez vous une idée ?

      Encore merci !

    • Bonjour,

      La date est au format américain (an-mois-jour) .
      Dans le fichier recherche_articles.html, des critères comme ci-dessous devrait marcher :

      {date_redac>=(#ENV{depuis,1000})-01-01} {date_redac<(#ENV{jusqua,3000})-01-01}

      => on cherche la date entre ’depuis’ (par défaut an 1000) et ’jusqua’ (par défaut an 3000) au 1er janvier...
      @+

    • MERCI+++
      ça marche nickel, me voilà sauvé !

    • Bonjour et encore merci pour l’aide que vous m’avez apportée... :-)

      J’ai un autre petit problème :
      Je voulais faire un tri sur les mots-clés, mais également exclure du résultat les articles possédant certains mots-clés.

      Le problème est que les articles ne possédants pas de mots-clés sont exclus des résultats.

      Voici les boucles que j’utilise dans mon formulaire :

      <B_nomot>
           <tr><td>
      			<label><:rechercheavancee:exclure_mot:></label>
      		</td><td>
      			<select name="id_nomot">
      				<option value="" style="color:silver"><:rechercheavancee:aucun:></option>
      				<BOUCLE_nomot(MOTS){id_groupe IN 2,4}>
      					<option value="#ID_MOT" [(#ENV{id_nomot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
      				</BOUCLE_nomot>
      			</select>
      		</td></tr>
          </B_nomot>

      Voici le critère que j’ai ajouté dans recherche.html :

      {id_mot != (#ENV{id_nomot})}

      Si j’efface ce critère de ma page, les articles manquants apparaissent dans les résultats.
      Où est-ce que j’ai fauté ?
      Merci.

    • Bonjour,

      La sélection par mot-clé n’est pas évidente.
      La façon de faire est d’utiliser le critère doublons : c’est expliqué ici : http://www.spip.net/fr_article4139.html (voir § Notre grand classique : exclure suivant un mot-clé).
      Il faut créer une première boucle pour sélectionner ce qu’on veut exclure (avec un critère
      doublons) puis on ajoute doublons à la boucle de recherche pour éliminer le résultat de la première recherche...

      @+

    • Bien sûr, je n’avais pas fait le lien !
      Merci !

    Répondre à ce message

  • 7
    meyodin

    Bonjour,

    J’ai tenté d’utilisé ce plugin sur mon futur site mais je rencontre des difficultés :
    La recherche par champs de texte fonctionne parfaitement mais la recherche par liste déroulante ne fonctionne pas du tout.

    Y a-t-il quelque chose que j’aurais oublié et qui permettrait de lier le contenu de ma base de donnée aux différents choix de mots-clés ?

    Merci de votre réponse.

    • Bonjour,
      Normalement, rien à faire. Vérifiez quand même que votre squelette ne surcharge pas le fichier recherche.html du plugin...
      Un lien pour voir l’erreur ?
      @+

    • meyodin

      J’ai réinitialisé tous mes squelettes pour y voir plus clair.

      Voilà ce qu’il se passe :
      * Lorsque je rentre un texte dans le premier champs : La recherche s’exécute et fonctionne
      * Lorsque je rentre un texte dans le premier champs et que dans mes mots-clé je sélectionne un mot, cela fonctionne (le filtre est actif)
      * Lorsque je rentre un texte dans le premier champs et que je sélectionne une rubrique, cela fonctionne (le filtre est actif)
      * Lorsque je laisse le champs de texte vide mais que je sélectionne un mot de ma liste de mot-clé, rien ne s’affiche (pas d’erreur ni d’information indiquant qu’il n’y aurait pas d’article correspondant à ce mot)
      * Lorsque je laisse le champs de texte vide mais que je sélectionne une rubrique, la rubrique choisie apparaît en gras dans mon menu de navigation (pas d’erreur ni d’information indiquant qu’il n’y aurait pas d’article correspondant à ce mot)

      Est-ce normal ?

      Je ne peux pas encore montrer d’exemple car je travaille en local.

    • Bonjour,
      C’est normal... la recherche de SPIP s’attend à avoir une chaîne sur laquelle chercher...
      Cependant depuis la v2, cette chaîne est optionnelle, il suffit pour cela de rajouter un ? derrière le critère recherche de la boucle...
      Il suffit donc de modifier autour de la ligne 53 du fichier recherche.html du plugin :

      <BOUCLE_articles(ARTICLES) {recherche}...>

      en :

      <BOUCLE_articles(ARTICLES) {recherche?}...>

      PS : j’ai modifié l’archive pour la v2.xx en ce sens.
      @+

    • meyodin

      Waouh !

      Merci beaucoup pour cette réponse rapide, cela fonctionne parfaitement ! Et en plus j’ai appris quelque chose de très intéressant !
      Merci encore pour ce plugin fort utile !

    • meyodin

      Rebonjour,

      Pour réaliser une revue de presse, je souhaiterais proposer une recherche des articles par année.
      J’ai pris modèle sur les autres listes pour faire la liste déroulante année, mais cela ne fonctionne pas. Je ne sais pas comment signaler le type de la boucle. Dois-je créer une nouvelle table pour y intégrer les année ?

      Est-ce que je m’y prends bien ? Ou est-ce que c’est plus compliqué que ça ?

    • Bonjour,

      Ce n’est pas beaucoup plus compliqué, il faut reprendre la boucle article (celle qu’on a déjà repris en ajoutant un «  ? ») afin d’ajouter un intervalle de dates.
      Quelque chose du genre :

      <BOUCLE_articles(ARTICLES) {recherche?}
      {date_redac>=(#ENV{an,1000})-01-01} {date_redac<=(#ENV{an,3000})-12-31}>


      -  où <= (resp. >=) signifie inférieur (resp. supérieur) ou égal
      -  où la variable an est définie dans votre liste déroulante (c’est le nom de votre liste), un truc comme cela à mettre dans le fichier formulaire/recherche_avancee.html :

      <select name="an">
        <option value="" style="color:silver" ><:rechercheavancee:nodate:></option>
        <option value="2008" [(#ENV{an}|=={2008}?{"SELECTED"})]>2008</option>
        <option value="2009" [(#ENV{an}|=={2009}?{"SELECTED"})]>2009</option>
        <option value="2010" [(#ENV{an}|=={2009}?{"SELECTED"})]>2010</option>
        <option value="2011" [(#ENV{an}|=={2011}?{"SELECTED"})]>2011</option>
      </select>

      Par défaut, si la variable n’est pas renseignée, on cherche entre le 1er janvier 1000 et le 31 décembre 3000. Sinon entre le 1/01 de l’année et le 31/12 de l’année ;-).

      Ce post peut vous aider : #440493

      Bon courage...

    • meyodin

      Merci pour cette réponse rapide. (J’avais déjà lu le post dont vous parlez ;)

      J’avais déjà trouvé cette solution là mais je cherche plutôt quelque chose qui récupèrerait l’année des articles existant dans ma rubrique de manière automatique, afin de ne pas devoir revenir dans le code chaque année pour rajouter ce champs manuellement.
      Je tourne, je tourne mais je n’ai toujours pas trouvé, et en faite, je me demande si c’est possible à faire...

    Répondre à ce message

  • 4
    marviro

    Bonjour, et merci beaucoup pour ce plug-in.
    J’aurais besoin d’ajouter une recherche libre par auteur, croisé avec celle de texte.
    Évidemment on peut la faire en donnant la liste complète des auteurs et ajoutant un id_auteur ?.
    Mais si je veut que l’usager puisse remplir lui-même le champ auteur et le champ « qui contient le texte », il me faudrait une autre variable recherche... avez-vous une idée ?
    L’idée pour moi c’est d’avoir un moteur de recherche comme celui des bibliothèques, avec plusieurs champs qui peuvent être remplis directement par l’usager (c’est parce que j’ai une très grosse base des données et que si je donne la liste c’est trop long...)

    Merci encore

    • Bonjour,

      Pour cela, il va falloir que vous vous mettiez au développement SPIP : commencer par faire une recherche sur les auteurs pour avoir une tableau d’auteur puis faire une recherche en donnant le tableau (avec une condition {id_auteur IN aut_array}) pour limiter la recherche à cette liste...

      @+

    • marviro

      c’est bien ce que je pensais... je vais m’y mettre...
      merci !

    • marviro

      Rebonjour...
      est-il possible de sélectionner plusieurs mots-clés ? (ex : je cherche un article connexe au mots-clés « philosophie » et « europe ».

      Merci beaucoup !

    • Bonjour,
      Même réponse que précédemment... il faut rajouter des menus pour les mots clé et faire une recherche avec une condition : {id_auteur IN mot_array} sachant que la condition IN équivaut à un ou (« philosophie » ou « europe »)...
      @+

    Répondre à ce message

  • 1

    Bonjour,

    Je vous remercie pour ce formulaire de recherche qui me semble trop utile.

    En faite je débute en Spip, j’ai bien téléchargé le Zip pour recherche avancée 2.XX, je l’es dézipper et puis le mettre sous plugins/auto comme les autres plugin mais mon problème se résume tout simplement en ceci : Je ne comprend pas vraiment comment utiliser votre plugin.

    Je vous remercie d’avance

    Cordialement

    • Bonjour,

      Normalement, le plugin remplace automatiquement le formulaire de recherche standard de SPIP, sauf si votre squelette surcharge déjà ce formulaire auquel cas, c’est votre squelette qui gagne... ou si vous utilisez un plugin qui surcharge ces fichiers (recherche.html et formulaires/recherche.html).

      @+

    Répondre à ce message

  • 2

    Bonjour,
    l’emploi du filtre google_like semble être déconseillé, voir sous le lien que tu donnes dans cette contrib : « Attention ! Cette contrib a fait l’objet d’une alerte de sécurité ...Merci de ne pas l’utiliser. » et sous le lien google like II on arrive sur un Erreur 404
    Mieux vaut ne pas utiliser ce filtre.
    à+
    joz

    • Bonjour,

      J’ai modifié le filtre d’origine. A priori, le filtre commence par faire une conversion en texte brut, ce qui devrait éviter ce genre de problème (?)...

      @+

    • merci pour l’info, c’est rassurant :)
      tu ne veux pas l’ajouter dans la contrib pour en informer tout utilisateur ?

      en tout cas un grand merci aussi pour cette contrib, la recherche avancée fonctionne trop bien !
      ++
      joz

    Répondre à ce message

  • 2

    Bonjour,
    J’aimerais bien rendre la recherche avancé fanctionnel avec le champs de recherche vide.
    c-à-d rendre possible une recherche genre : articles des « 3 derniers mois » dans la rubrique « Test ».
    Avez vous une idée comment faire ?
    merci pour des astuces..
    joz

    Répondre à ce message

  • 1

    Re-bonjour,
    est-ce que le champ « Page dont le titre contient » fonctione ? Chez moi il est tout simplement ignoré...
    merci
    joz

    Répondre à ce message

  • 1

    Le dernier fichier-archive corrigé recherche_avancee_2_xx.zip provoque une erreur “Impossible de désarchiver” sur MacOS. Pas de problème avec les autres archives.

    Répondre à ce message

  • 2

    Bonjour,

    je suis en train d’essayer d’utiliser votre plugin sous SPIP 2.12 et j’ai rencontré quelques erreurs lors de la validation des pages.

    Dans le fichier formulaires/recherche.html, j’ai changé ceci :

    <a href="?page=recherche&avancee=1&lang=#ENV{lang}&recherche=#RECHERCHE"

    en

    <a href="spip.php?page=recherche-avancee&amp;avancee=1&amp;lang=#ENV{lang}&amp;recherche=#RECHERCHE"

    pour que cela soit valide.

    De même, dans le fichier formulaires/recherche-avancee.html, j’ai modifié toutes les occurrences de <Option> en <option>

    Dans le fichier recherche.html à la racine du dossier, il y a des propriétés de la balise <table> qui n’ont pas de guillemet. Par exemple,
    <table border=0 cellspacing=0 cellpadding=0 width=310> ou encore <td valign=bottom height=50>

    Cordialement.

    • J’ai aussi trouvé dans recherche.html à la racine du dossier, des <h2 class=surtitre> à changer en <h2 class="surtitre">

      Et aussi dans formulaires/recherche-avancee.html : <select name="id_mot" ID="Select1"> à changer en <select name="id_mot" id="Select1">

    • De même dans le fichier recherche_avancee_fonctions.php

      Remplacer : <span class=spip_surligne>" par <span class=\"spip_surligne\">" ainsi que les 3 occurrences de <i class=rsusp> par <i class=\"rsusp\">

    Répondre à ce message

  • Bonjour,

    est ce que ce plugin fonctionne tout de même sur spip 2.0 ?

    Merci !

    Répondre à ce message

  • 3

    bonjour, j’aime beaucoup cette contrib, j’ai réussi à modifier pour exclure des groupes de mot clé mais j’aimerai que ça ressemble aux pages de mon site (spip 2.01+eva web) et non à un formatage brut, je ne sais pas dans quel fichier bricoler et quoi bricoler.
    est-il possible que ça figure dans un bloc plutôt qu’une page entière.
    C’est pour ne pas égarer l’utilisateur.
    Par ailleurs, si on ne met rien dans la recherche, ça serait pas mal que ça liste (pour les mots clé par exemple dans une rubrique).
    Je suis débutant dans spip, css, html... pas facile....
    Merci d’avance
    Yvan

    • La recherche SPIP appelle la page recherche.html il vous suffit donc de la modifier pour qu’elle tienne compte du style de votre site.
      Par contre SPIP ne sait pas rechercher une chaine vide... Il me semble que la v2 autorise une recherche conditionnelle, il faudrait alors mettre un ? dans le critère de recherche (dans le squelette, remplacer recherche par recherche ? mais je n’ai pas testé.

      @+

    • Denis Chatiron

      Bonjour,
      Je suis preneur de la méthode pour exclure certains groupe de mots clé dans le fichier recherche-avancee.html

      Il me semble que ça doit se trouver là :

      <label><:rechercheavancee:limiter_groupe:></label>
      </td><td>
      <select name="id_groupe" >
      <Option value="" style="color:silver"><:rechercheavancee:all:></option>
      <BOUCLE_surgmot(GROUPES_MOTS)>
      <Option value="#ID_GROUPE" [(#ENV{id_groupe}|=={#ID_GROUPE}?{"SELECTED"})]>#TITRE </option>
      </BOUCLE_surgmot>
      </select>
    • Bonjour,

      Il suffit de lui préciser les groupes qu’on ne veut pas voir :
      <BOUCLE_surgmot(GROUPES_MOTS){id_groupe!=10}>
      ou
      <BOUCLE_surgmot(GROUPES_MOTS){id_groupe !IN 5,10,12}>
      par exemple...

      Voir l’utilisation de critère IN dans les boucles.

      @+

    Répondre à ce message

  • 1

    Merci beaucoup, Jean-Marc.
    Je me jette à l’eau, alors !
    (je débute sur Spip, c’est passionnant mais les débuts sont un peu dur, dur :)

    • Denis Chatiron

      Bonjour, je cherche à modifier le fichier recherche-avancee.html pour exclure certains groupes de mots clés pour qu’ils n’apparaissent pas. Il me semble qu’il faudrait modifier ce code mais ne sait pas comment.
      Idem pour exclure certains mots-clés mais ça doit être pareil.

      Merci d’avance

      <label><:rechercheavancee:limiter_groupe:></label>
      		</td><td>
      			<select name="id_groupe" >
      				<Option value="" style="color:silver"><:rechercheavancee:all:></option>
      				<BOUCLE_surgmot(GROUPES_MOTS)>
      					<Option value="#ID_GROUPE" [(#ENV{id_groupe}|=={#ID_GROUPE}?{"SELECTED"})]>#TITRE </option>
      				</BOUCLE_surgmot>
      			</select>
      		</td></tr>

    Répondre à ce message

  • 1

    Bonjour,
    Je vois que cette contrib est compatible spip 1.9.2.
    Quelqu’un l’a-t-il déjà testée avec une version 2.0.10 ?

    Répondre à ce message

  • ploufplouf

    Bonjour,

    J’ai installé le plugin et suivi les instructions pour obtenir une recherche avancée (c’est surtout la limitation des rubriques qui m’intéresse) mais quand je lance une recherche, aucun résultat apparait. Ma base de données est bien remplie pourtant.

    Ma page apparait comme je l’ai habillée mais c’est au niveau fonctionnalité que ca ne marche pas.

    Auriez-vous connaissance d’un bug à ce niveau ?

    J’utilise une version 1.9.2 de spip.

    Répondre à ce message

  • 1

    Je cherche à adapter à mon site, je rame un peu... Par contre, le truc bizarre c’est que la recherche classique (formulaire recherche dans page sommaire Eva-Web) ne fonctionne plus...
    En tout cas, c’est un outil génial. Bravo

    • Bonjour,

      Il se peut que Eva-Web surcharge déjà la fonction de recherche, ce qui peut provoquer des conflits avec le plugin...

      Bon courage...

    Répondre à ce message

  • 6

    Bonjour,

    Nous rencontrons un problème de pagination sur notre site : seule la 1re page s’affiche...

    Quand on clique sur un autre numéro de page de résultats, on affiche encore et toujours la 1re page.

    Ex. page 2 de la recherche :

    http://munci.org/spip.php?page=recherche&lang=fr&recherche=munci&debut_articles=7#pagination_articles

    Voyez vous d’où le pbm peut venir ?

    Merci !

    • Je dirais qu’il manque un passage de paramètre debut_articles dans le INCLURE de votre squelette de recherche :

      <INCLURE{fond=corps_recherche}{recherche}{avancee}{depuis}{id_mot}{id_rubrique}{tri}{titre}{debut_articles}>

      Sinon, depuis la v2, le parametre env permet de transmettre tout l’environnement en ajax (voir http://www.spip.net/fr_article3753.html).

      @+

    • Là je suis scotché... réponse positive 2 mns après mon post, vraiment bravo et merci !

      J’en profite pour vous poser une dernière question : je constate qu’il y a à la fin des URL des pages trouvées le filtre ?var_recherche=(mot recherché)

      N’est-il pas prévu un focus quelconque (highlight, surlignement...) du mot recherché dans ces pages ?

      Ou bien alors avons-nous encore un petit pbm dans nos squelettes ?

      Merci !
      (et bravo pour cet excellent plugin)

    • Le mot recherché s’affiche dans un style particulier. Pour cela, il faut définir une classe spip_surligne dans son css (munci.css pour vous)...

      Par exemple, pour surligner :

      .spip_surligne { background-color:yellow; }

      @+

    • Ok c’est corrigé pour çà, merci !

      En fait je voulais parler du surlignement du mot recherché dans les articles...

      Mais il est possible que ca soit écrasé par un autre style du squelette article.

    • Même punition... il faut passer l’environnement aux inclusions ;-)

      <INCLURE{fond=corps_article}{id_article}{var_recherche}> 
    • Autre oubli de notre part en effet (honte)... merci.

      Mais... pas de chance... malheureusement ca ne suffit pas ;-(

    Répondre à ce message

  • Merci Jean-Marc,
    j’ai réglé mon matter grace à vous. Je vous souhaite bonne continuation...

    Répondre à ce message

  • 1

    Je n’ai pas malheureusement pas réussi à trouver, depuis l’interface de gestion, où créer un nouvel article pour le lier à celui-ci. J’ai parcouru les commentaires (de façon non-exhaustive, je le crains) et je n’ai pas trouvé de contribution similaire à celle que je vais soumettre ici.

    Je voulais proposer que cette contribution soit le début de la création d’un plugin (chose que je ne sais faire) ou plutôt, de l’évolution du plugin existant (chose que je ne sais faire non-plus).

    Quoi qu’il en soit, voici quel était mon problème et quelle solution (la contrib) que mon pote Gaston y a apporté.

    Je développe un site, sous spip, bien sûr, pour recenser l’ensemble de l’offre de formation sur mon département... Jusqu’ici, cela n’intéresse personne...

    Mais cela a son importance puisque, après avoir trouvé le moyen d’alimenter mon site en données, assez facilement (par un jeu de boucles et de plugins), j’étais coincé pour exploiter ces données dans le moteur de recherche natif de spip et je n’ai pas trouvé de plugins qui répondent exactement à mes besoins. Le plugin « Recherche Avancée » se rapprochait néanmoins beaucoup de la solution, excepté que je n’utilise pas de mots-clé.

    Ce point de détails n’est pas anodin et renvoie à la nature de l’activité de mon site (recenser l’offre de formation)... qui prend son importance, désormais. Je travaille, en effet, depuis une base excel transmise par un partenaire, que je convertis en CSV et que j’importe dans ma base sql. Ce qui me permet de rédiger environ 800 articles, en quelques clics. J’ai rajouté quelques champs à la table « articles » pour l’aménager à mes besoins et j’ai affiché ces champs dans le fichier article.html de la dist. Dans ces conditions, il est, en effet, or de questions de tagger, un a un, les 800 articles qui, de toutes façons, changent à peu près chaque mois. Il me fallait donc trouver d’autres options de recherche pour naviguer « horizontalement » dans mon site spip.

    J’ai compris, qu’en principe, n’importe lequel de ces champs (ne pouvant prendre, pour la plupart, qu’un nombre fini de valeurs) représentait, par conséquent, un groupe de mot-clés précis bien identifiables.

    J’ai donc entrepris de modifier le plugin pour l’adapter à mon besoin... Mais je n’y suis pas parvenu... Ou du moins, cela ne fonctionnait pas... D’où l’entrée en scène de mon pote Gaston qui lui, à modifier directement le squelette (oui, je sais, c’est mal), à défaut d’avoir réussit, lui non plus, à modifier le plugin. En tout cas, ça marche ! Enfin, à quelques exceptions près... On a un problème avec les champs contenant certains caractères spéciaux... Je les ai supprimé et cela fonctionne bien.

    L’idée maintenant, c’est de pouvoir en faire un plugin propre (en tout cas beaucoup moins artisanal que notre méthode), qui ne nécessite pas de toucher au squelette (ce qui posera, évidemment, quelques problèmes futurs, parfaitement prévisibles).

    Voici la méthode qui a été appliquée :

    Elle consiste à modifier les fichiers suivants : squelettes-dist/recherche.html, squelettes-dist/formulaires/recherche.html et squelettes-dist/formulaires/recherche.php

    POUR LE FICHIER : squelettes-dist/formulaires/recherche.html

    Il faut introduire, entre la deuxième et la troisième balise input, le code figurant dans l’exemple suivant. Ici, c’est le champs « DESCRIPTIF » qui a été sélectionné et il a pour contenu les codes NSF des formations (à titre d’exemple) :

    	<B_surdescriptif>
        		<label>CODE NSF</label>
    			<select name="descriptif" >
    				<Option value="" style="color:silver">Tous</option>
    <BOUCLE_surdescriptif(ARTICLES)>[<Option value="(#DESCRIPTIF|supprimer_tags|unique)" style="display:block" [(#ENV{descriptif}|=={#DESCRIPTIF|supprimer_tags}?{"SELECTED"})]>#DESCRIPTIF </option>]</BOUCLE_surdescriptif>
    			</select>
        </B_surdescriptif>

    Il faut recommencer cette manip, autant de fois que nécessaire, en changeant, bien sûr, le nom de la boucle et celui des champs, en les remplaçant par ceux des champs que l’on souhaite exploiter.

    Ensuite...

    POUR LE FICHIER : squelettes-dist/recherche.html

    Il faudra modifier le Fil d’Ariane, comme ceci (toujours en prenant le même exemple, moins les quelques personnalisations de polices que j’y ai introduite)...

    		[(#REM) Fil d'Ariane ]
    		<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> &gt; <:info_rechercher:>&gt; <strong class="on"> [(#RECHERCHE)] [(#DESCRIPTIF)]</strong></div>
    		    <div class="cartouche">
    			<h1><span style="font-family: Comic Sans MS; text-transform: uppercase"><:resultats_recherche:></span></h1>
    			<p class="soustitre">&#171;&nbsp; [(#RECHERCHE)] [(#DESCRIPTIF)] &nbsp;&#187;</p>
    		</div>

    ENFIN, POUR LE FICHIER : squelettes-dist/formulaires/recherche.php

    Il y rajouter une ligne, entre la ligne 26 et la ligne 27, comme ceci :

                            'surtitre' => _request('surtitre'),

    Ca y est ! C’est fait ! Un joli moteur de recherche tout neuf qui permet de naviguer en fonction d’un contenu variable, dans un champs, et fonctionnel sur toutes les tables sql possibles... Is good !

    Mesdemoiselles, Mesdames, Messieurs... J’attends vos commentaires et vos propositions sur une création de plugin. Peut-on faire migrer cette discution, si nécessaire, sur une nouvelle page ?

    Répondre à ce message

  • 1

    Merci Viglino Jean-Marc,
    ll me reste juste (pour l’instant) à modifier mes critéres de recherche (noms à coté des champs) pouvez vous m’indiquer le chemin svp ?

    Autre chose, j’ai un projet qui prevoit la creation d’alerte mail genre site immobilier, est ce qu’avec le formulaire de contact avancé je pourrais m’en sortir ?

    Merci encore une fois, spipement votre !!!!

    • Bonjour

      Si vous voulez modifier les noms des champs, il vous suffit de modifier le fichier de langue : lang/recherche_avancee.fr.

      Recopier le dans le fichier de votre squelette lang/local.fr (à créer si besoins) et modifier les noms. Eviter les accents ou codez les (é devient &acute;) et les ’ que vous devez faire précéder de \.

      Par exemple :
      'contenant' => 'Pages contenant le texte :',
      devient :
      'contenant' => 'votre texte :',

      Pour le formulaire contact avancé, je n’ai jamais testé.

    Répondre à ce message

  • 1

    bonjour à tous,
    félicitation pour ce plugin. Je voudrais savoir comment on peut modifier les critères de recherche et sur quel fichier devra-t-on intervenir pour personnaliser et intégrer le formulaire dans nos squelettes ?

    Autre chose, Quand on met #FORMULAIRE_RECHERCHE est ce qu’il y a moyen de ne pas faire appparaître la mention « recherche avancée » ?

    En vous remerciant d’avance, bonne continuation...

    • Bonjour,

      Le fichier à modifier (recopiez le dans votre squelette) est le fichier formulaires/recherche-avancee.html (pour modifier le formulaire) et recherche.html (pour modifier la boucle de recherche et la présentation des résultats).

      Pour ne pas faire apparaître ’recherche avancée’, il faut mettre un display:none dans votre css.

      <style>
      .recherche_avancee { display:none; }
      </style>

      @+

    Répondre à ce message

  • 2
    Tropicaloo

    Bonsoir,

    Ce formulaire reprend un code du plugin Google Like. Qu’en est-il de la faille de sécurité évoquée dans Google Like par rapport au plugin Recherche Avancée ?

    • Bonjour,

      Pas vraiment d’idée là dessus :-(

      J’avait modifié le filtre d’origine. A priori, le filtre commence par faire une conversion en texte brut, ce qui devrait éviter ce genre de problème...

      @+

    • Tropicaloo

      Jean-Marc, merci pour ta réponse.

    Répondre à ce message

  • Génial !

    Merci beaucoup !

    Ca marche !

    Par contre, pour info, en validant mon html sur w3c, il m’a déniché pas mal d’erreurs sur le formulaire, essentiellement liées à des majuscules par ci par là dans les balises !

    C’est toujours bon à savoir !

    Pour ma part, je fonctionne sans le plug-in, et j’ai remodifié les fichiers donc je n’ai pas la version corrigée mais je vous laisse ma version, si ça peut aider quelqu’un !

    <div class="formul2">
    
    		<form action="spip.php?page=recherche" method="get">
    		<fieldset>
    			   
    			<input name='page' value='recherche' type='hidden' />
    			<input name='avancee' value='1' type='hidden' />
    			
    
    	<!-- la chaine cherchee -->
    			<div>
    			<label>Contenant</label>
    			</div>
    			<div>
    			<input type="text" class="forml" name="recherche" id="recherche2" value="#RECHERCHE" />
    			</div>
    
    		
    
    
    	<!-- DATE -->
    			<div>
    			<label>Date limite</label>
    			</div>
    			<div>
    			<select name="depuis">
    				<option value="">aucune</option>
    				<option value="7" [(#ENV{depuis}|=={91}?{"SELECTED"})]>1 semaine</option>
    				<option value="30" [(#ENV{depuis}|=={91}?{"SELECTED"})]>1 mois</option>
    				<option value="91" [(#ENV{depuis}|=={91}?{"SELECTED"})]>3 mois</option>
    				<option value="182" [(#ENV{depuis}|=={182}?{"SELECTED"})]>6 mois</option>
    				<option value="365" [(#ENV{depuis}|=={365}?{"SELECTED"})]>1 an</option>
    				<option value="730" [(#ENV{depuis}|=={365}?{"SELECTED"})]>2 ans</option>
    				<option value="1095" [(#ENV{depuis}|=={365}?{"SELECTED"})]>3 ans</option>
    				<option value="1460" [(#ENV{depuis}|=={365}?{"SELECTED"})]>4 ans</option>
    				<option value="1825" [(#ENV{depuis}|=={365}?{"SELECTED"})]>5 ans</option>
    			</select>
    			</div>
    			
    	<!-- RUBRIQUE -->
        <B_surrub>
        <div>
    			<label>Département</label>
    		</div>
    		<div>
    			<select name="id_rubrique">
    				<option value="">tous</option>
    				<BOUCLE_surrub(RUBRIQUES){racine}>
    					<option value="#ID_RUBRIQUE"[(#ENV{id_rubrique}|=={#ID_RUBRIQUE}?{"SELECTED"})]>#TITRE</option>
    				</BOUCLE_surrub>
    			</select>
    		</div>
        </B_surrub>
    
    	<!-- MOT-CLE -->
       
    
       
        <div>
    			<label>Limiter au mot</label>
    		</div>
    		<div>
    			<select name="id_mot" id="Select1">
    				<option value="">tous</option>
    				<BOUCLE_groupes2(GROUPES_MOTS){par titre}{titre!=niveaurub}>
    				<optgroup label="#TITRE">
    				<BOUCLE_surmot(MOTS){id_groupe}>
    				<BOUCLE_art2 (ARTICLES) {id_mot}>
    				</BOUCLE_art2>
    					<option value="#ID_MOT"[(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
    				</B_art2>
    				</BOUCLE_surmot>
    				</optgroup>
    				</BOUCLE_groupes2>
    			</select>
    		</div>
     
    
    	
         <div>
    			<label>Exclure le mot</label>
    		</div>
    		<div>
    			<select name="id_nomot">
    				<option value="">aucun</option>
    				<BOUCLE_groupes(GROUPES_MOTS){par titre}{titre!=niveaurub}>
    				<optgroup label="#TITRE">
    				<BOUCLE_nomot(MOTS){id_groupe}>
    				<BOUCLE_art (ARTICLES) {id_mot}>
    				</BOUCLE_art>
    					<option value="#_nomot:ID_MOT"[(#ENV{id_nomot}|=={#_nomot:ID_MOT}?{"SELECTED"})]>#_nomot:TITRE</option>
    				</B_art>
    				</BOUCLE_nomot>
    				</optgroup>
    				</BOUCLE_groupes>
    			</select>
    		</div>
       
    
    	<!-- TRIE -->
         <div>
    			<label>Trier par</label>
    		</div>
    		<div>
    			<select name="tri">
    				<option value="points">pertinence</option>
    				<option value="date" [(#ENV{tri}|=={date}?{"SELECTED"})]>date</option>
    				<option value="id_rubrique" [(#ENV{tri}|=={id_rubrique}?{"SELECTED"})]>département</option>
    				<option value="popularite" [(#ENV{tri}|=={popularite}?{"SELECTED"})]>popularité</option>
    			</select>
    		</div>
    
        
    			<input type="submit" class="bouton" value="Rechercher" />
    
    	</fieldset>	
    		</form>
    
    </div>		

    NB : attention il n’y a plus le tri par groupe car il ne m’était pas util (tous les articles, sur mon site ont un et un seul mot de chaque groupe)

    Répondre à ce message

  • 2

    Salut !

    Tout d’abord merci pour ta réponse !

    Je crois qu’il y a un bug avec la fonction exclure mot clé !

    Chez moi le paramètre n’agit pas, les articles contenant ce mot apparaissent tout de même !
    Pourtant la fonction limiter à un mot fonctionne très bien.

    J’ai retourné le problème dans tous les sens, à mon humble niveau, mais tout me semble bien codé pourtant.

    Suis-je seul à avoir constaté le pb ?

    Merci à vous de procéder à un test.

    Je vous tiens si je trouve une solution !

    je vais me coucher !!!!

    • Bonjour,

      En fait, « exclure mot » ne marche que si l’aticle n’est associé qu’a ce mot clé uniquement, s’il est associé à un autre mot clé dont on demande la sélection, il est sélectionné...

      désolé...

    • re-bonjour,

      En fait, pour exclure vraiment un mot clé (même s’il est associé à d’autres mots clés), il faudrait faire une boucle avant <B_articles> dans le fichier recherche.html avec un critère doublons.

       <BOUCLE_exclure(ARTICLES){id_mot=#ENV{id_nomot}}{doublons}></BOUCLE_exclure>

      et rajouter le critère {doublons} dans la boucle de recherche : BOUCLE_articles.

      Mais cela devient un peu lourd...

      @+

    Répondre à ce message

  • 1

    Salut !

    je viens de découvrir ta contrib !

    Très bon boulot !

    J’ai cependant deux questions afin d’adapter un peu à mes besoins !

    1) Tous d’abord, sur mon site, toussont associés à un et un seul mot de chaque groupe.
    La recherche par groupe n’est donc pas pertinente chez moi.
    Par contre, serait-il possible de faire une recherche sur plusieurs mots clés en même temps ?

    exemple : j’ai un groupe de mots type et un groupe promotion
    Tous mes articles ont un mot clé du groupe type et un du groupe promotion . (un et un seul)
    Mais j’aimerais récupérer les articles par exemple de type mp3 et de la promotion 2008.

    Est-ce faisable, dans la mesure où une boucle article avec id_mot1id_mot2id_mot3 recoupe bien la préseence des 3 mots.

    2) Je reprends une question précédemment posée : la recherche vide ne renvoie aucun résultat.
    Serait-il possible que, dans le cas d’une recherche vide, on obtienne les articles correspondant aux autres caractéristiques ?

    Merci d’avance pour les réponses.

    • Bonjour,

      En fait, c’est plus compliqué :
      -  Pour 1), il faut faire une recherche du type id_mot IN (id_mot1,id_mot2,.... Du coup, si on ne précise plus de id_mot, cela ne marche plus (l’option id_mot ? n’est plus disponible)...
      -  Pour 2, ce n’est plus une recherche au sens de SPIP...

      Il faudrait écrire une fonction spécifique (une boucle sans l’option recherche et avec plusieurs id_mot). Désolé...
      jmv

    Répondre à ce message

  • 3
    Maitresinh

    wow, ça c’est du répondant, merci :)

    le plugin est installé mais apparemment il ne remplace pas par défaut le moteur de rechercher existant ?

    En tout cas, rien n’apparait chez moi.

    J’utilise des blocs ( via magusine) mais a priori cela ne change rien

    • Attention, ce plugin reprend et modifie les fichiers recherche.html et formulaires/recherche.html de la dist.

      Vérifiez bien que magusine ne surcharge pas ces fichiers dans votre répertoire « squelettes »...

      Sinon, supprimer les du répertoire squellettes de votre site... (ou renommez les en .old pour faire un test ;-) et faite un recalculer ou vider le cache comme il se doit !

    • Maitresinh

      en fait j’ai l’impression qu’il les cours-circute en les remplacant par des« blocs ». un bloc appelle effectivement #FORMULAIRE_RECHERCHE

      mais seul le formulaire habituel apparait. a moins de pouvoir appeler un #FORMULAIRE_RECHERCHE_AVANCEE

      il est possible de creer un bloc recherche avancée, mais ça demande d’avoir un code/ boucle a inserer et donc dépluginiser...

      bouuu :/ c’etait trop beau...( puis je récupérer le code de la boucle seule et l’inserer ?)

      une boucle simplifiée alternative sans plugin ?

    • Maitresinh

      je me repond partiellement pour tout ceux qui voudraient l’inclure a magusine :

      Magusine remplace les deux fichiers de recherche par les siens.

      il suffit de les « ecraser » avec ceux du plugin, dans le repertoire plugins/magusine a leur emplacement respectif.

      Malheureusement si cela marche, la page de resultat elle ne correspond pas au squelette pas defaut de magusine. Reste a trouver ou ça coince....(peut etre supprimer le formatage du plugin ?)

      En tout cas merci de ce beau plugin qui permet de facto de transformer des mots clefs en outil performants.

      juste une question :

      et si je veux faire une recherche vide ?

      C’est a dire chercher tous les articles correspondant a : mot clef1 ET mot Clef2 ( avec ou sans selectionner de rubrique ou d’autres criteres ), quelquesoit leur contenu ? ( cela suppose au passage de pouvoir choisir 2 mots clefs)

      j’ai essayé, mais une recherche vide ne renvoie...rien. Ce qui est logique d’une certaine maniere.

    Répondre à ce message

  • 2
    Maitresinh

    oh le beau plugin !

    je voudrais l’adapter pour faire uniquement des recherches multicriteres sur mots clefs (tous les mots clefs selectionnés par defaut) , en affichant le menu deroulant pour chaque groupe....

    quelqu’un a-t-il une idée ?

    • Cela doit pouvoir se faire...

      Dans le fichier recherche.html, il faut reprendre la BOUCLE_articles en remplaçant le paramètre {id_mot?} par {id_goupe?} pour que la recherche se face par groupe de mot.

      Pour l’affichage de la recherche, il faut reprendre la BOUCLE_surmot{MOTS} et la remplacer par une BOUCLE_surmot{GROUPES_MOTS} en remplaçant ID_MOT par ID_GROUPE...

      Bon, je dis ça, mais je n’ai pas vraiment testé...

      @+

    • J’ai mis une nouvelle version qui permet une recherche par groupe de mots.

      à tester ;-)

    Répondre à ce message

  • 5
    Surfingjack

    Bonjour, merci pour le plugin.
    Il m’est très utile, mais j’aimerais rendre la recherche plus précise dans le temps.
    Comment faire pour proposer une recherche limitée entre 2 dates choisies par le visiteur ?

    • Bonjour,

      Pour cela, il vous faut rajouter des champs au formulaire : dans le fichier formulaires/recherche-avancee.html (à recopier et modifier dans squelettes/recherche-avancee.html) ajoutez les lignes (après la ligne 28) :

      <tr><td>
       <label class="forml"> date 1 </label>
      </td><td>
       <input type="text" class="forml" name="date1" id="date1" value=""/>
      </td></tr>
      <tr><td>
       <label class="forml"> date 2 </label>
      </td><td>
       <input type="text" class="forml" name="date2" id="date2" value=""/>
      </td></tr>

      Il vous faut alors prendre en compte ces champs dans le fichier recherche.html : ligne 57 dans la BOUCLE_articles(ARTICLES), rajoutez les paramètres :

      {date>=#ENV{date1}} {date<=#ENV{date2,"3000-01-01"}}

      pour chercher les articles entre date1 et date2. La valeur par défaut « 3000-01-01 » assure que si date2 n’est pas rempli, on cherche les articles publié avant le 1er janvier 3000...

      Attention, vous devez entrer les dates sous la forme : année-mois-jour (2007-11-14).

      Bon SPIP,
      jmv

    • Surfingjack

      Merci, ça fonctionne nickel.
       ;-)

    • bgcolor

      Bravo pour ce plugin fort utile.

      Dans le même ordre d’idées, je voudrais introduire deux autres champs :

      Prix : de [somme1] à [somme2]

      Année : de [année1] à [année2]

      Merci !

    • Bonjour,

      Pour l’année, c’est assez facile, il suffit de remplacer dans l’exemple ci dessus les dates par :

      {date>="#ENV{date1}-01-01} {date<="#ENV{date2}-01-01"}

      Pour le prix, il faut que celui-ci soit définit dans la table des articles et qu’on puisse y accéder dans la boucle SPIP des articles. Dans ce cas, le principe est le même...

      @+

    • bgcolor

      J’ai oublié de préciser que pour l’année, il s’agit d’une année définie en mot clé et non avec la date classique de SPIP.

      Pour le prix, c’est pareil. Je sens que je vais devoir creuser encore.

      Merci

      @+

    Répondre à ce message

  • 2

    Bonjour

    J’essaye d’utiliser la recherche avancee sur les documents rattaches aux rubriques sachant que ces documents utilisent des mots cles du plugin mots partout.

    Je n’arrive pas a limiter la recherche a une rubrique ou a un mot cle. Est-ce possible ou ca ne peut s’appliquer qu’aux articles ?

    Merci d’avance

    George

    • La recherche SPIP est une boucle sur les articles...
      Mais on peut également l’appliquer aux rubriques, brèves et forums.
      (voir sur spip.net)

      Mais a priori, pas pour les documents...

    • Merci pour la reponse mais chez moi la recherche marche sur les titres et descriptifs des documents. Seulement je n’arrive pas a limiter a une rubrique particuliere ou a un mot cle particulier

    Répondre à ce message

  • 3

    Bonjour !!
    nous créeons un site avec un squelette minigrispip et nous avons installer le plugin de recherche avancée. Mais lorsque nous lancons une rechereche avancée, nous nous retrouvons avec ca

     : 1) // Chaine avant $avant = substr($tab[$i][0],-$cc,$cc) ; $mots = split(« « ,$avant,2) ; if (count($mots)>1) $avant = $mots[1] ; // Chaine apres $apres = substr($tab[$i][2],0,$cc) ; $apres = preg_replace(’@(.+)\s\S+@s’, ’\1’, $apres) ; // Concatener if ($string_re==’’) $string_re = »[...] » ; $string_re .= « $avant ».$tab[$i][1].« $apres [...] «  ; // Si rien trouve : renvoyer les premiers mots en resume if ($resume !=’’ && $string_re==’’) $mots = split( » »,$string,40) ; for ($i = 0 ; $i < count($mots)-1 ; $i++) $string_re .= $mots[$i]." " ; if (strlen($string_re)>2*$cc) break ; $string_re .= « [...] » ; return $string_re ;  ?>

    au dessus de notre bandeau......
    Quelqun a t’il une solution ?????
    merci davance !!!!!!!!!

    • Il semble y avoir un problème avec le code du filtre google_like (du fichier recherche_avancee_fonction.php)... (conflit avec un autre plugin ou le squelette ?)

      Comme cela, je n’ai pas d’idée, peut-être le remplacer par un autre ou le supprimer, pour commencer...

      @+

    • ladyweb

      peut-être mettre sur la 1re ligne mettre

      <?php au lieu de <?
      dans le fichier recherche_avancee_fonctions.php
    • OOoops vous avez raison...

      merci

    Répondre à ce message

  • 3

    Bonjour

    Est-il possible d’etendre la recherche pour inclure les titres et descruptifs des documents joints, sachant que des mots-cle leurs sont associes via le plugin mots partout ?

    Merci d’avance

    • Bonjour,

      A priori, les titres des documents sont indexé par le moteur de recherche standard de SPIP (voir plugin Recherche Etendue). Chez moi, cela fonctionne : je trouve les articles sur le nom du document qu’ils contiennent (dans le porte folio)
      Je ne sais pas ce qu’il en ait des mots-clé...

      @+
      jmv

    • En fait, moi j’ai des documents joints a des rubriques et je voudrai afficher les titres des documents trouves plutot que la rubrique a laquelle ils sont attaches.

      J’ai mis une boucle documents dans le fichier recherche mais elle ne donne rien.

      C’est bizarre que la recherche trouve des sites syndiques et affiche leur URLs mais pas des documents.

      Une suggestion ?

    • Je me repond

      J’ai ajoute un boucle document dans la boucle rubrique sous le titre « Voir aussi les Rubriques » et maintenant j’ai les titres de mes documents.

      J’espere que ce n’est pas trop lourd.

    Répondre à ce message

  • 2

    Est-il possible de paramétrer soit le plugin, soit le squelette afin de rechercher sur une table externe à SPIP ?

    Quelles sont les champs sur lesquels s’effectue l’indexation qui permet ensuite de faire la recherche ? Les champs extra sont-ils indexés pour la recherche ?

    Ces deux questions sont légèrement disjointes mais mon besoin est de porter sur SPIP une FAQ dynamique questions / réponses / date de la question.
    J’ai tout celà dans une table externe simple à 3 champs + identifiant clé primaire
    Mon objectif est d’intégrer dans SPIP un plugin de gestion de questions DP (site syndical)

    Répondre à ce message

  • 4
    atuttabirra

    Est-ce qu’il y a une version de ce plugin très intéressant pour spip 1.9.2b ?

    Norbert

    • La version est présentée en 1.9.2b (c’est celle que j’utilise). Elle a été testée en version 1.9.3 dev par all secu.

    • atuttabirra

      Dans mon site avec la version 1.9.2b le formulaire n’apparaît pas. Lorsqu’on clique sur « recherche avancée » rien ne se passe.

      Norbert

    • Êtes-vous sûr que votre squelette ne surcharge pas le fichier de recherche (y-a-t’il un fichier squelettes/recherche.html) ? Sinon, c’est ce fichier qui sera utilisé à la place de celui du plug-in...
      (voir installation à expliquer svp et Recherche avancée et alternatives)

    • atuttabirra

      En effet ! Il y avait surcharge. Etant donné que je suis au début je ne comprenais pas bien le sens de la remarque. J’ai remplacé le fichier squelettes/recherche.html avec celui du plug-in. Le formulaire apparaît et il fonctionne. C’est vraiment très bon. Merci beaucoup.

      Norbert

    Répondre à ce message

  • 2

    bonjour,

    Suite à la mise à jour, il semble qu’il y ait un problème avec spip 1.9.3 dev, le formulaire n’apparait plus comme il faut avez vous une idée de l’origine du problème svp ( résultat)

    • Désolé, je n’ai pas (encore) installé la 1.9.3...

      Mais j’ai peut-être une idée sur le problème qui se pose et j’ai fait une reprise que vous pouvez tester en téléchargeant la dernière version jointe à l’article...

    • re,

      Ca marche nikel avec la 1.9.3 ( y’a juste un petit soucis de mise en page pour la liste des rubriques mais c’est négligeable et à vrai dire ce n’est pas le plus important . Je regardes dès que j’ai un momment)

      Merci

    Répondre à ce message

  • 3
    abelass

    Merci beaucoup pour ce plugin très util et facilement adaptable.

    Afin d’avoir les résultats dans la langue correspondante (celle de la page où la requête est faite)

    j’ai rajouté dans recherche_avancee/formulaires/recherche_avancee.html

    <input name='lang' value='#ENV{lang}' type='hidden' />

    après

    <input name='page' value='recherche' type='hidden' />
    <input name='avancee' value='1' type='hidden' />

    et

    remplacé dans recherche_avancee/formulaires/recherche.html

    <a  href="?page=recherche&avancee=1&recherche=#RECHERCHE">

    par

    <a  href="?page=recherche&avancee=1&lang=#ENV{lang}&recherche=#RECHERCHE">

    et j’ai évidemment rajouté dans recherche_avancee/formulaires/

    les fichiers de langues necéssaires : http://www.protectionline.org/plugi...

    Voir : http://www.protectionline.org/spip....

    Rainer

    • Bonjour,

      Ce plugin est-il compatible avec Google Ajax Search ? Autrement, comment faire pour utiliser le moteur de recherche google à la place de la recherche Spip ? J’ai remarqué que mon site est plus rapide avec le moteur Google...

    • A priori, le plugin Google Custom Search est totalement indépendant du formulaire de recherche SPIP... Ce sont donc deux façon de faire différentes... à vous de choisir

    • Je l’ai intégré à la v0.2

      merci jmv

    Répondre à ce message

  • 1
    zerocool

    Bonjour,
    comment peut on retirer des groupes de mot clé ou simplement des mots clé dans la recherche avancée ?
    Merci

    • Recopiez le fichier formulaires/recherche-avancee.html dans votre répertoire squelettes/formulaires et modifiez la boucle affichant les mots-clés (ligne 61) :

      <BOUCLE_surmot(MOTS)>

      par :

      <BOUCLE_surmot(MOTS){id_groupe!=xx}>

      Les mots-clé du groupe xx ne s’afficheront plus...

      Voir également autres critères de sélection des mots-clés sur : http://www.spip.net/fr_article909.html

      De la même manière, en modifiant la boucle des rubriques (<BOUCLE_surrub(RUBRIQUES){racine}>) vous pouvez étendre la recherche à des rubriques spécifiques, etc.

    Répondre à ce message

  • 1

    Bonjour !
    Super ce plugin.Cependant le temps de réponse des recherches est très long > 30 secondes.
    D’ou pourrait venir le problème ? Sans le plugin les réponses sont rapides.
    Merci
    Nicolas

    • Bonjour,
      La recherche avancée fait plus de calcul que la recherche normale (calcul des points, affichage des mots clés, filtre google)... Peut-être que cela vient de là... (30 secondes me paraît beaucoup).

      Utilise la variable var_profile (à ajouter en fin de ligne de dans le navigateur : spip.php?page=recherche&...&var_profile) pour afficher les temps de calcul dans les boucles et voir d’où vient le problème. Sinon, tu peut désactiver certaines fonctionnalités dans le fichier recherche.html...

      As-tu une url à donner ?

      @+
      jmv

    Répondre à ce message

  • 4
    allsecu

    bonjour,

    tout d’abord merci pour ce plugin bien utile .

    J’ai un petit bug avec spip 1.9.3dev+ alternatives :

    -  DOUBLE OCCURENCE HEAD
    -  JQUERY fonctionne mal pour les autres plugins

    Sinon j’essaye de l’intéger dans une balise div pour mon site et ca force la dist ?
    Est-ce normal ?

    Enfin puis-je appeler le formulaire de recherche par une balise (par exemple pour afficher le formulaire de recherche avancée de la page d’accueil) ?

    Merci d’avance et encore félicitation pour le plugin

    (Ps : pas de lien car du coup le plugin n’est pas encore activé car en test)

    • Bonjour,

      je n’ai (encore) pas testé la 1.9.3, désolé, mais a priori, le plugin ne fait que surcharger la recherche de SPIP et introduire un fichie css dans le head...

      Je n’ai pas jugé bon de créer de balise pour intégrer le formulaire, il faut donc faire un INCLURE :

      <INCLURE{fond=formulaires/recherche-avancee}{recherche}{avancee}
      {depuis}{id_mot}{id_rubrique}{tri}{titre}>
    • all secu

      merci pour la réponse apparamment ca a l’air de fonctionner en rajoutant compat193 pour le rendre compatible avec les anciennes versions . Cependant, pour l’include, il me manque le bouton d’envoi ?!! Et est-ce normal que je n’arrives pas à l’adapter à alternatives mais seulement avec la dist ?!!

      Merci d’avance

    • Attention, le squelette alternative surcharge recherche.html qui sera prioritaire par rappport au plugin... Remplacez celui du répertoire squelettes par celui du plugin ou reprenez celui d’alternatives en fonction du plugin (rajouter le include ligne 28-37 du plugin). Une autre solution, je pense qu’on peut mettre une majuscule au répertoire du plugin Recherche avancée : il sera alors avant le plugin alternatives (R<a<r) dans la liste des plugins (mais je n’ai pas testé la compatibilité).

      Bouton d’envoi manquant : peut-être un pb dans un css... (un hidden qui traine dans un .formulaire_spip .bouton...)

    • allsecu

      bonjour,

      j’ai résolu le problème du bouton caché mais il me reste un dernier soucis : sous Internet Exploreur, l’affichage du formulaire est aléatoire et dépasse ma mise en page . J’ai bien essayé de modifier les fichiers du formulaire pour forcer la taille des colonnes à 350 au lieu de 500 mais rien n’y fait.....

      Auriez-vous une petite idée svp ?

      Merci d’avance

    Répondre à ce message

  • 1

    Bonjour
    Je crois qu’Un minimum serait de mettre un p’tit paragraphe sur « comment installer ce plugin » qui est un peu particulier...
    -  faut-il remplacer le fichier rechercher.html d’origine par celui du plugin, aprés l’avoir installé ?
    -  si en plus un squelette était dèjà installé, comment les fichiers formulaires du squelette vont se comporter ?

    ...etc

    Dommage que n’ayant pas réponses à ces questions, j’ai dû désinstaller ce plugin qui me semble trés interessant. Le lien « recherche avancé » m’affiche une magnifique page toute blanche.

    Dans l’attente de pouvoir utiliser votre magnifique travail... merci.

    • Comme indiqué dans l’article, le plugin surcharge les fichiers recherche.html et formulaire/recherche.html de la dist...

      Si vous les avez déjà surchargés dans un squelette, ce sont les votres et non ceux du plugin qui seront utilisés... normal, c’est le principe de base des squelettes de pouvoir être personnalisés...

      Vous avez donc le choix de ne pas les surcharger (les supprimer du squelette) ou recopier ceux du plugin dans votre dossier squelettes... et en profiter pour les modifier si le cœur vous en dit...

    Répondre à ce message

  • Bonjour,
    J’utilise ce plugin (merci !) pour forcer la réindexation de mes nouvelles tables. Est-il nécessaire de rajouter les éléments au tableau $INDEX_elements_associes ? Si je ne fais pas, sur la page ?exec=admin_index le bargraph des tables qui n’ont pas été définies reste sur « Indexation de la table non configurée »...

    Merci d’avance,
    A+
    Cyril

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom