SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Navigation > Tris conditionnels > Mots-clés dans intervalles > Mots-clés (ou autres objets) dans des intervalles

Mots-clés (ou autres objets) dans des intervalles

31 janvier 2007 – par claudeD

Attention, ne fonctionne pas en Spip 3 !

En effet, en Spip 3, les critères <, >, <= ou >= ne fonctionnent plus avec titre_mot (même s’ils fonctionnent encore avec titre).

La problèmatique

Voici un tableau qui représente 5 classes d’une école. Je pointe l’âge le plus bas et l’âge le plus haut de chaque classe pour connaitre les tranches d’âge de chaque classe. On voit que la pour 1re classe, les élèves ont tous 7 ans et que les autres classes comprennent des élèves de plusieurs âges.

âges 5 6 7 8 9 10
1re classe 7
2e classe 7 9
3e classe 5 7
4e classe 6 9
5e classe 8 10

Un ministère, propose une action ou un examen pour tous les élèves de 7 ans, quel que soit leur niveau. Je recherche donc les classes ayant des élèves âgés de 7 ans pour discuter avec leurs enseignants. Si j’utilise ma grille ci-dessus et que j’appelle le mot-clé « 7 », je vais obtenir pour résultat les objets (article, brève, rubrique...) 1re classe, 2e classe, 3e classe. Je ne vais pas avoir la 5e classe, ce qui est normal. Le problème est que je ne vais pas non plus avoir la 4e classe qui comporte peut-être aussi des élèves âgés de 7 ans.

Avec cette contribution, je propose de retrouver les objets (ici des articles) dont des mots-clés entourent une valeur donnée. Ici cette valeur est un mot-clé du même groupe, mais on pourrait aussi fournir une valeur par un formulaire ou autre.

Ma liste de mots-clés peut, par exemple, être des limites d’âge, des ordres de hauteur d’une plante (de 50 cm à 80 cm), des limites de normes (analyses de sang), des limites de tolérance au calcaire ou à l’acidité (exemple développé ci-dessous). Je pourrais aussi saisir toutes les valeurs intermédiaires entre les bornes mais c’est un peu longuet au bout d’un moment, donc je peux l’éviter si je suis certain que les valeurs sont continues. Outre des valeurs, il peut s’agir de mots classés alphabétiquement et trouver que « cassis » est dans la page « brugnon-cassoulet ». L’utilisation potentielle est large.

L’exemple

Pour l’un des mes groupes de mots-clés, j’ai eu envie de classer mes articles par plages de valeurs compatibles avec une valeur choisie.

Ici, Il s’agit du potentiel Hydrogène (échelle logarithmique de tolérance à l’acidité ou à la basicité du sol). Donc mes plantes (mes articles) ont une limite basse et une limite haute. Ces limites sont des mots-clés rassemblés dans un même groupe. Un article peut avoir 0 (pas de données disponibles), 1 (besoin de pH très pointu ou... lacunaire) ou 2 mots-clés (les limites idéales basse et haute).

Dans la recherche par mot-clé, si je choisis la valeur « 4,5 », je n’aurais pas les articles sans mots-clés de ce groupe, mais j’aurais les articles ayant le mot-clé « 4,5 ». Çà ne me satisfait pas car je veux aussi les plantes (articles) dont la plage pH comprend la valeur « 4,5 » même si aucune des valeurs limites de cette plage n’est le mot-clé « 4,5 ». Plus concrètement, je souhaite que le bleuet qui a une plage de préférence de pH 4 à pH 7 apparaisse dans cette page. En effet, « 4,5 » est supérieur à « 4 » et inférieur à « 7 ».

Avec ma boucle, je peux obtenir cette page d’exemple qui va bien.

Une contrainte : saisir les mots-clés dans un ordre croissant de valeur (4 ; 4,5 ; 5 ; 5,5 ; 6 ; 6,5 ; 7…). et non pas en désordre (4,5 ; 6 ; 7 ; 5,5 ; 4…). Ces valeurs peuvent être numériques comme alphabétiques puisque l’on utilise l’ordre des id_mot pour trier. Le but est que l’ordre des id_mot du groupe corresponde à l’ordre désiré des mots-clés. Une variante plus souple (sic) est proposée plus loin.

Dans l’exemple, je pars d’une page « mot.html » (dont la boucle principale se nomme BOUCLE_mot_principal en général) et je travaille sur le groupe 46 des mes mots-clés. Je remplace la boucle d’affichage par celle-ci :

Les boucles sont bien espacées pour la lisibilité. À l’usage, il vous faudra certainement en recoller certaines, notamment celles à l’intérieur de BOUCLE_ph_haut pour éviter des effets de bord.

Explications

BOUCLE_ph_bas : Je sélectionne tous les articles qui ont un id_mot — dans ce groupe — inférieur ou égal à l’id_mot de ma page (avec doublons A).

BOUCLE_ph_hors : Avec doublons A, je sélectionne tous les autres articles et les renomme doublons B. Cela me permettra de réutiliser la sélection de la première boucle.

BOUCLE_ph_haut : Je sélectionne tous les articles qui ont un id_mot dans ce groupe qui est supérieur ou égal à l’id_mot de ma page. Ils avaient déjà étaient sélectionnés dans la première boucle comme ayant leur ou l’un de leurs mots-clés du groupe ayant un id inférieur à celui de la page. Pour les articles ayant deux mots-clés de ce groupe (la généralité), l’un de ceux-ci à une id inférieur ou égale à l’id de ma page, et l’autre mot à une id supérieur ou égale à l’id de la page. J’ai donc bien les articles ayant des mots du groupe de même id que la page OU qui ont des id encadrantes la valeur de l’id de la page : « id_mot bas <= id_mot de la page <= id_mot haut ». S’il n’y a qu’un mot, il suffit que ce soit celui de la page en cours (ici « 4,5 » [1]).

BOUCLE_ph_1 : J’affiche le premier — dans l’ordre des titres, donc dans l’ordre des id — des mots-clés du groupe 46 pour chaque article.

BOUCLE_ph_2 : J’affiche le dernier — dans le même ordre — des mots-clés de ce groupe pour chaque même article.


Une variante avec le titre du mot-clé

Cette boucle permet d’éviter la contrainte de saisir des mots-clés dans un certain ordre… et donc de ne plus pouvoir modifier ce groupe et de continuer à utiliser la contrib.

J’utilise des dérivées de cette boucle pour classer des hauteurs : « quels sont les végétaux qui peuvent mesurer 5 mètres [ou 20 centimètres] ? » ou aussi « quelles sont les plantes qui mesurent au minimum [ou au maximum] 20 centimètres de haut ? ». L’astérisque est ici utilisée (dans TITRE*) pour utiliser la saisie de type « 000253. Titre du mot » [2].

Il faut alors faire attention à ce que la numérotation soit différente entre les groupes de mots. Utiliser : 01. Mot dans un groupe et 001. Mot dans un autre, etc. ; sinon ces deux mots seront équivalents. Le « titre_mot » ne peut être réduit à un groupe et la boucle va donc chercher tous les mots de même titre. D’autres astuces sont aussi possibles.

Voir en ligne : Un exemple de page avec cette contribution

P.-S.

Attention ! Si vous utilisez cette contrib sur le squelette mot.html, tous vos mots-clés de tous leurs groupes vont l’utiliser.

Il vous faut donc soit créer un fichier spécialisé pour gérer les mots de ce groupe soit utiliser au moins la première partie de la contrib suivante Squelettes pour groupes et par groupes de mots. Celà vous donnera des squelettes mots-clés qui pourront être différents selon les groupes de mots-clés.

Notes

[1Mais il affichera « pH 4,5 à 4,5 » avec les boucles suivantes.

[2C’est aussi cette saisie qui permet d’utiliser le critère {par num titre} .

Dernière modification de cette page le 12 septembre 2014

Retour en haut de la page

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

  • Paiement avec Formidable

    16 février 2015 – 53 commentaires

    Ce plugin « Paiement avec Formidable » permet d’ajouter une étape de paiement à la fin de la saisie d’un formulaire créé par le plugin Formidable. Il le complète et nécessite par ailleurs le plugin bank qui gère l’interface technique avec les prestataires (...)

  • Spip2Spip

    21 février 2008 – 159 commentaires

    Spip2spip permet de synchroniser le contenu de plusieurs sites SPIP entre eux en étendant le principe de la syndication thématique. Les articles d’un SPIP sont récopiés d’un site à l’autre en conservant leur formatage (...)

  • jQuery Lazy Load pour SPIP

    29 juillet 2009 – 21 commentaires

    Ce plugin permet d’utiliser le script jQuery Lazy Load dans les pages publiques de votre site.

  • Newsletters

    16 janvier 2013 – 411 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • Flux RSS configurable

    8 avril 2011 – 63 commentaires

    Ce plugin vous permet de personnaliser le fonctionnement de votre flux RSS à l’aide d’un formulaire dans l’espace privé. Instalation Pour fonctionner, ce plugin nécessite que le plugin Itérateurs soit installé et activé sur votre site. Par (...)

Ça spipe par là