SPIP-Contrib

SPIP-Contrib

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

274 Plugins, 192 contribs sur SPIP-Zone, 197 visiteurs en ce moment

Accueil > Navigation > Recherche > Recherche sur le texte et/ou les mots clés

Recherche sur le texte et/ou les mots clés

25 août 2005 – par Olivier GENDRIN – commentaires

3 votes

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cette contrib décrit un squelette qui permet de faire une recherche dans la page de recherche en limitant la recherche soit à des mots contenus dans le texte et/ou à des mots-clés, avec un résultat paginé.

Problèmatique

Il s’agit de pouvoir faire une recherche dans le texte des articles, mais en limitant éventuellement la ’zone’ de recherche à l’aide de mots-clés.

Il faut aussi que, si un seul ou aucun mot-clé n’est sélectionné, ou s’il n’y a pas de recherche sur le texte, la recherche se fasse tout de même.

On cherche ici in fine à sélectionner les articles dans une unique rubrique en fonction des mots-clés qui leur sont attribués et de leur contenu.

Le tout doit être paginé par paquets de 5 réponses.

Cette boucle ne fonctionne pas pour un couple de mots clés (ici tranche + theme) qui n’a pas d’article.

Préliminaires

Ce squelette utilise une des avancées majeures de la 1.8, le critère #ENV . Lisez la documentation si vous voulez comprendre un petit peu se qu’il se passe. Notament la notation #ENV{Tranche,antiBug} qui permet, lorsqu’il n’y a pas d’élément dans #ENV{tranche}, d’éviter une erreur dans le squelette à cause d’une recherche sur un élément vide.

Notez que vous pouvez remplacer antiBug par le nom d’un mot clé existant afin de forcer par défaut la recherche sur ce mot clé.

Dans cet exemple, la recherche porte sur deux groupes de mots clés, Tranches (il s’agit de tranches d’âges) et theme_fiche (les fiches sont classées par thèmes).

Formulaire

Vous pouvez aller voir la page de référence sur les formulaires par le W3C pour aller plus loin.

Voici un exemple de formulaire de recherche pour ce squelette :

<form action="rubrique.php3" method="get" class="formrecherche"> : le formulaire appelle la page de destination. Ici il s’agit d’une rubrique. il suffit de changer le contenu de l’élément action pour changer la page de destination. On note que la méthode (get) fait que les paramétres de recherche sont passés dans l’URL.

<input type="hidden" name="id_rubrique" value="#ID_RUBRIQUE"> : c’est ce paramètre qui permet de rester sur la même page (ici une page rubrique).

Dans cette partie, on génére la liste des mots clés du groupe Tranches, afin de remplir la zone de sélection du formulaire. La boucle _liste_theme qui suit celle-ci fait exactement la même chose.

On pourra rajouter à l’élément select un champ size="X" pour afficher X mots clés en même temps (un ascenseur permettra de faire défiler la liste des mots).

Cette partie est la reprise du code de formulaire_recherche.php3, qui se trouve dans le dossier formulaires de SPIP.

Ce second forumaire permet de recharger la page de recherche en effaçant toutes les recherches pour reprendre à zéro.

Les boucles de recherche et de pagination

La boucle d’orientation

Cette boucle permet de savoir quel(s) champs de recherche sont remplis :

Ce qui nous donne, une fois que l’on ajoute les boucles d’affichage et de pagination :

Voir la contrib de James sur la pagination pour ce qui est de la pagination.

Comment fonctionnent ces boucles (le fonctionnement est stritement le même pour ce qui est des boucles de décompte des pagination et de celles d’affichage) ?

Une fois que la boucle d’orientation à permis de déterminer quels sont les champs qui contiennent des données, les boucles qu’elle contient permettent d’afficher les informations pertinentes.

Pour aller plus loin

-  Il est possible d’étendre ce principe à autant de mots clés que l’on veut, mais le nombre de test à réaliser devient considérable si on ne force pas l’utilisateur à sélectionner un mot clé dans chaque groupe.

Peut-être qu’il est possible de remplir #ENV avec une valeur bidon de telle manière qu’il sélectionne tous les articles correspondants au groupe considéré.

-  Trouver une méthode qui permette de signaler un couple de mot clés qui ne posséde pas d’article.

-  On peut étendre ces boucles aux sous rubriques de la rubrique de recherche en changeant {id_rubrique} en {branche} dans les boucles.

-  Il faudrait trouver une méthode pour entrer dans #ENV un tableau à la place d’une variable, ce qui permettrait de faire des sélects sur plusieurs mots clés d’une même groupe :<select name="Theme" multiple title="Sélection du ou des thêmes voulus">

Retour en haut de la page

Vos commentaires

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

  • Calendrier Mini 2.0

    19 mai – commentaire

    Ce plugin ajoute la balise #CALENDRIER_MINI qui insère un petit widget de navigation par mois dans les dates des évènements. Fonctionnement du mini calendrier Le mini calendrier présente un mois à la fois. Les jours du mois comportant des (...)

  • Portage Magusine pour SPIP 2.1

    14 octobre 2010 – 14 commentaires

    Portage du plugin magusine-portage2 (2.0->2.1) en : appliquant les recommandations de la page Spip 2.1 repérant et corrigeant les incompatibilités connues. Modification du fichier plugins.xml en : portant version 1.8 à 1.9 modifiant le (...)

  • Le Couteau Suisse

    4 mai 2007 – 1359 commentaires

    Ce plugin propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP et qui s’avèrent rapidement indispensables ! Par exemple : le contrôle de nombreuses variables « cachées » de SPIP, des améliorations ou facilités typographiques, (...)

  • Métas

    8 août 2009 – 34 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

  • Modèles Facebook

    28 juin 2011 – 42 commentaires

    Ce plugin propose un ensemble de modèles SPIP (ou noisettes) pour intégrer simplement et rapidement les modules sociaux du site Facebook. Voici la liste des modèles proposés : ’send’ : le bouton « Envoyer » classique (avec commentaire), ’like’ : (...)