SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 203 visiteurs en ce moment

Accueil > Navigation > Recherche > Recherche avancée > Recherche avancée - Sans Mots-clés

Recherche avancée - Sans Mots-clés

11 août 2009 – par mtfkarukera – 12 commentaires

8 votes

Comment créer son moteur de recherche avancée, sous spip, en utilisant les contenus des champs sql... Ou comment se passer des mots-clés dans son moteur de recherche.

IMPORTANT - ATTENTION : Nous espérons que d’autres développeurs plus chevronés nous aident à en faire un plugin propre.

J’ai parcouru le site (de façon non-exhaustive, je le crains) et je n’ai pas trouvé de contribution similaire à celle que je vais soumettre ici.

J’aurais souhaité que cette contribution soit le début de la création d’un plugin (chose que je ne sais pas faire) ou plutôt, de l’évolution d’un plugin existant (chose que je ne sais pas faire non plus).

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

Dans le cadre d’un portail spip que je développe, j’ai utilisé le plugin Import CSV pour importer de nombreux articles dans ma base de données (environ 800). Or il m’était impossible d’importer, en même temps, les mots-clés liés à chaque article et il était hors de question de saisir un à un les mots-clés de chaque article puisque le contenu de la base change à peu près chaque mois.

J’ai compris, qu’en principe, n’importe quel champ (qui ne soit susceptible de prendre qu’un nombre fini de valeurs), dans n’importe quelle table sql, représentait, potentiellement, un groupe précis de mots-clés bien identifiables.

Par conséquent, j’ai entrepris de modifier le plugin « Recherche Avancée 5 » 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, à modifié directement le squelette, à défaut d’avoir réussi, 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és 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, dans un premier temps, à copier les fichiers suivants, dans un répertoire /squelettes, à la racine du site : squelettes-dist/recherche.html, squelettes-dist/formulaires/recherche.html et squelettes-dist/formulaires/recherche.php. Il suffit, ensuite, de les modifier en suivant ces exemples :

POUR LE FICHIER : squelettes/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 champ « 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/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 introduites)...

[(#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/formulaires/recherche.php

Il faut 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 champ, et fonctionnel sur toutes les tables sql existant dans la base... It is good !

Mesdemoiselles, Mesdames, Messieurs... J’attends vos commentaires et vos propositions sur une création de plugin.

P.-S.

Une bonne partie des scripts présentés ici ont été adaptés à partir du plugin « Recherche Avancée 5 » de Viglino Jean-Marc. Voir ici : http://www.spip-contrib.net/Recherche-avancee-sous-SPIP

Regarder le moteur de recherche à l’action ICI

Dernière modification de cette page le 25 septembre 2009

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 15 septembre 2010 à 17:45, par Adrien Combeau En réponse à : Recherche avancée - Sans Mots-clés

    Bonjour,

    Il manque tout de même quelque chose d’important pour que le tout fonctionne correctement (peut-être ton système fonctionnait correctement avant la 2.0)

    Dans la page recherche.html (celle qui affiche les résultats, pas le formulaire...), il faut ajouter un nouveau filtre à la boucle concernée afin que le critère que tu lui transmet à l’aide de ton formulaire modifié soit interprété. En respectant ton exemple, ça donnerait :

    1. <BOUCLE_articles(ARTICLES) {recherche?} {descriptif?}{par points}{inverse} {pagination}>
    2. <li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
    3. </BOUCLE_articles>

    Télécharger

    Dans cet exemple, j’ai mis «  ? » après le critère traditionnel « recherche » et après « descriptif ». Cela permet de traiter tout de même la recherche, même si un seul des deux champs est complété...

    Bien à vous !

    Répondre à ce message

  • Le 7 avril 2010 à 01:02, par mtfkarukera En réponse à : Recherche avancée - Sans Mots-clés

    Voici, encore, une de mes réponses tardives... Il faut que tu créés un squelette recherche2.html et que tu appelles ce squelette dans tes autres squelettes. Maintenant, pour ce qui concerne la façon de créer la balise de recherche qui te permettra d’appeler ton squelette, jette un coup d’oeil sur cette doc : http://www.spip.net/fr_article903.html

    Répondre à ce message

  • Le 11 mars 2010 à 22:47, par Mickael En réponse à : Recherche avancée - Sans Mots-clés

    Bonjour mtfkarukera
    Merci cette réponse.
    Mais non, en fait l’idée c’est d’avoir 2 formes de recherche distinctes : dans l’entete de toutes les pages du site un champ de recherche simple qui exclut un secteur spécifique, et une page de « recherche avancée » qui restreint la recherche à un secteur spécifique et à certains champs extras.
    Or le fait d’avoir d’avoir placé le fichier recherche.html dans le répertoire « squelettes/formulaires » altère le champ de recherche simple.
    Donc la questions serait plutôt comment faire une recherche avancée en utilisant un autre nom de squelette que « recherche.html » ou bien comment faire un formulaire de recherche avancée qui renvoie vers une page resultat-recherche-avancee.html au lieu de recherche.html
    En espérant être clair.
    Merci bcp

    Répondre à ce message

  • Le 10 mars 2010 à 23:02, par Mickael En réponse à : Recherche avancée - Sans Mots-clés

    Bonjour
    Bravo et merci pour ce tuto. Ca m’est vraiment très précieux.
    Je bute à présent sur un nouveau problème :
    Comment peut-on distinguer « recherche » de « recherche avancée » de telle sorte qu’on puisse utiliser le moteur de recherche natif de SPIP en mode simple et/ou utliser la recherche avancée sur un autre squelette en mode « recherche avancée » ?
    Auriez-vous une idée de la méthode pour obtenir deux modes recherche ?
    Merci bcp

    • Le 11 mars 2010 à 01:30, par mtfkarukera En réponse à : Recherche avancée - Sans Mots-clés

      Bonjour Mickael,

      Si je l’ai bien comprise, ta question n’est pas en lien avec le plugin, mais plutôt liée au squelette. C’est justement en lien avec ce qui m’était dit précédemment. Ce tuto répond-t-il à ta demande ?

      http://www.spip.net/fr_article3347.html

      Sinon... Le moteur de recherche, dans sa présente version, permet déjà une utilisation en mode simple et une utilisation en mode avancé. Si aucun critère de « filtre » n’est sélectionné, le moteur de recherche se comporte comme le moteur natif de spip.

    Répondre à ce message

  • Le 25 septembre 2009 à 12:22, par mtfkarukera En réponse à : Recherche avancée - Sans Mots-clés

    Bonjour Livier,

    Toutes mes excuses pour cette réponse très tardive. Je vais essayer de répondre, au mieux, à tes questions et je te remercie pour tes encouragements, que je perçoit en tant que tel, d’ailleurs.

    Pour commencer, il faut, oui, travailler avec le dossier /squellettes. Les champs que j’utilise me sont propres. Il vaudrait mieux que tu t’intéresses au code que je donne dans l’article, à titre d’exemple.

    Dans mon moteur de recherche, le champs #DESCRIPTIF contient des informations sur le CODE NSF des formations, mais cela ne te sera d’aucune utilité. Tu peux lui attribuer le label de ton choix (par exemple « TYPE DE NOIX DE COCO », « MOLECULE ACTIVE », « TAILLE DES BOUTONS DE FIEVRE » et j’en passe, selon ton intérêt. Il faut juste sélectionner le champs sql qui contient l’information que tu veux « filtrer » dans ta recherche. Ce peux être, aussi, un champs extra que tu aurais créé.

    Oui, dans la page de résultat, je n’ai changé que le fil d’ariane.

    Dans le fichier php, ce bout de code permet, si mes souvenirs sont bons (c’est Gaston qui l’a trouvé), de retenir le choix effectué dans l’environnement.

    Voilà, n’hésites pas à me demander plus d’infos.

    Répondre à ce message

  • Le 1er septembre 2009 à 15:06, par livier En réponse à : Recherche avancée - Sans Mots-clés

    Bonjour,

    Je me suis inspiré de ton article, mais sans le comprendre entièrement ... et pour faire une recherche avancée utilisant mot clef et rubrique ;-)

    Peux tu nous dire plus précisément ce que font les éléments de code que tu nous offre ?
    -  Dans le formulaire tu semble t’intéresser au DESCRIPTIF de chaque article (C’est quoi le code NSF ?)
    -  dans la page de résultat tu ne changes que le fil d’Arianne ?!?
    -  dans le fichier recherche.php, je ne comprend pas ce que tu fais :(
    Même sans faire un plugin, tu peux encore nous aider, mais n’appelle pas ton zip « plugin ... » mais « exemple... »

    Effectivement comme dit Phil, on doit mettre ces fichiers dans le répertoire « squelettes » qui est fait pour ça, l’explication dans ton article en sera simplifiée par rapport aux précautions que tu nous y donne actuellement.

    Ces petites critiques sont des encouragements ...

    Répondre à ce message

  • Le 14 août 2009 à 12:02, par mtfkarukera En réponse à : Recherche avancée - Sans Mots-clés

    Phil, c’est bon. Je me suis documenté sur ce dossier /squelettes. En effet, c’est tout à fait ce qu’il faut faire. Je vais modifier le texte en fonction de cela. Je te remercie.

    Romy, j’ai parlé de recherche « sans mot-clés » car, jusqu’ici, toutes les contribution que j’ai trouvé, autour de la création d’un moteur de recherche, consistait à exploiter la fonctionnalité « mots-clés » de spip. Le fait est que, dans le cas présent, il n’était pas possible, pour moi, de les utiliser (pas de façon aisée, en tout cas). J’ai dû faire « sans mots-clés ».

    En définitive, le moteur de recherche « sans mot-clés » est un moteur de recherche qui ne se base pas sur la fonctionnalité « mots-clés » de spip pour faire une recherche avancée.

    Je ne pense pas non-plus, si c’est bien ce que tu suggères, que cette appellation soit la plus adéquate. Je crois même avoir utilisé, en d’autres occasions, d’autres termes pour le décrire.

    Que proposerais-tu comme appellation ? J’avoue ne pas en être satisfait non-plus...

    Répondre à ce message

  • Le 14 août 2009 à 11:49, par Romy Têtue En réponse à : Recherche avancée - Sans Mots-clés

    Qu’est-ce qu’une « recherche sans mots-clés » ???

    Répondre à ce message

  • Le 12 août 2009 à 15:09, par mtfkarukera En réponse à : Recherche avancée - Sans Mots-clés

    Salut Phil,

    Excuse mon ignorance, mais je ne connais pas ce répertoire. Je ne l’ai pas dans mon répertoire spip.

    Tu peux m’expliquer s’il te plaît. C’est quoi ce répertoire ? Faut-il le créer ? Comment reparamétré spip en fonction ? Quelles utilisations peut-on en faire ?

    Je te remercie.

    @+

    Répondre à ce message

  • Le 12 août 2009 à 13:39, par phil93 En réponse à : Recherche avancée - Sans Mots-clés

    on n’est pas obligé de modifier le squelette de spip
    il suffit de copier les fichiers dans /squelettes et les repertoires équivalents et il n’y a aucun risque

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Champs Extras 3

    16 janvier 2012 – 523 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Réservation d’événements

    16 mars 2015 – 188 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)

  • Les crayons

    23 avril 2008 – 815 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

  • LESS pour SPIP : Less-CSS (anciennement LESSpip)

    5 novembre 2010 – 43 commentaires

    Less-CSS (Anciennement LESSpip) est un plugin intégrant facilement le logiciel LESS dans SPIP. LESS est une extension de CSS ajoutant les variables, les classes, les opérations, les imbrications au langage. Facilitant ainsi l’écriture de (...)

  • Recommander

    3 avril 2011 – 16 commentaires

    Ce plugin propose une manière simple de suggérer de recommander par email un article à un ami. Fonction « recommander un article à un ami ». On l’ajoute dans n’importe quel squelette sous la forme : #RECOMMANDERtitre de la page,url de la page,intro (...)

Ça spipe par là