SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Navigation > Recherche > Recherche avancée

Recherche avancée sous SPIP

lundi 13 août 2007, par Viglino Jean-Marc. Dernier ajout lundi 10 septembre 2007


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 :

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 :


Dernière mise à jour :
- 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)

P.-S.

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é dans votre répertoire « squelettes »...


Répondre à cet article

  • 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

    Retour au début des forums

  • Recherche avancée sous SPIP dates

    12 novembre 2007 11:48, par 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 ?

    Répondre à ce message

    • Recherche avancée sous SPIP dates 14 novembre 2007 14:37, par Viglino Jean-Marc

      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

      Répondre à ce message

    Retour au début des forums

  • Recherche avancée sous SPIP

    7 septembre 2007 19:52, par atuttabirra

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

    Norbert

    Répondre à ce message

    Retour au début des forums

  • Recherche avancée sous SPIP

    5 septembre 2007 14:20, par all secu

    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)

    Répondre à ce message

    • version 1.9.3 dev 5 septembre 2007 17:00, par Viglino Jean-Marc

      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...

      Répondre à ce message

      • version 1.9.3 dev 5 septembre 2007 17:09, par all secu

        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

    Retour au début des forums

  • Résultats dans la langue de la requête

    13 août 2007 16:05, par 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

    Répondre à ce message

    Retour au début des forums

  • Recherche avancée sous SPIP

    29 août 2007 11:08, par zerocool

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

    Répondre à ce message

    • Recherche sur groupe de mots 29 août 2007 17:29, par Viglino Jean-Marc

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

      par :

      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

    Retour au début des forums

  • Recherche avancée sous SPIP

    21 août 2007 18:54, par Niko

    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

    Répondre à ce message

    • Recherche avancée sous SPIP 26 août 2007 13:37, par Viglino Jean-Marc

      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

    Retour au début des forums

  • Recherche avancée sous SPIP

    14 août 2007 11:53, par 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)

    Répondre à ce message

    • Recherche avancée sous SPIP 16 août 2007 17:58, par Viglino Jean-Marc

      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 :

      Répondre à ce message

      • Recherche avancée sous SPIP 17 août 2007 22:12, par 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

        Répondre à ce message

        • Recherche avancée et alternatives 18 août 2007 18:58

          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...)

          Répondre à ce message

          • Recherche avancée et alternatives 22 août 2007 13:01, par 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

    Retour au début des forums

  • installation à expliquer svp

    19 août 2007 01:47, par kordy

    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.

    Répondre à ce message

    • installation à expliquer svp 19 août 2007 18:14

      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

    Retour au début des forums

  • 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

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et fonctionnement SPIP-Contrib | SPIP | L'autre.net