Tri avec exclusion personnelle

Salut,
je souhaiterais mettre en place un filtre personnalisé.
C’est à dire, suite à une recherche, permettre d’exclure des éléments de cette recherche pour créer une liste sur mesure. L’idée est de pouvoir par la suite faire un export des données que l’on garde.
Concrètement, je n’ai pas l’impression de trouver cela dans les plugins, mais je n’ai pas être pas cherché où il fallait…
Étant plus bidouilleur qu’autre chose, je souhaitais demander un avis ici sur la méthode qui semblerait adaptée.
Voici plusieurs choses auxquelles je pense. Je ne sais pas si certaines sont réalisables ou si je me fourvoie.
1- Est-il possible d’exclure directement dans l’adresse avec quelque chose du type
www.nomdusite.fr/spip.php?page=recherche&recherche=test**&(ajout excluant articles 14, 5 et 9)**
Ça serait juste le top !
2- Est-il possible de cocher des résultats pour leur ajouter une variable d’environnement et mettre à jour le résultat de la recherche en excluant ses résultats ?
Le souci dans le deuxième cas est qu’il faille refaire la sélection de ce que l’on souhaite retirer à chaque fois que l’on souhaite accéder à la liste.
3-Y’a t’il plus malin à faire ?
Très bonne journée à vous !
Ben

Ca pourrait être un mot-clé « exclus » que tu mettrais sur les articles qui ne doivent pas être inclus dans la recherche, et utiliser une boucle ARTICLES{recherche}{titre_mot != "exclus"} par exemple?

Attention le critère {titre_mot != "exclus"} n’excluera pas les articles ayant le motclé exclus mais qui ont un autre motclé, car cet autre motclé matchera le critère. Il faudrait donc plutôt {! titre_mot = "exclus"} .

Ceci dit je ne me prononce pas sur la pertinence de passer par un motclé car ça dépend de comment on sait ce qu’il faut exclure.

1 « J'aime »

Merci à vous deux.
L’exclusion par mots-clés ne me semble pas possible, car les articles exclus peuvent être différents pour une même recherche (fait par le même utilisateur ou deux différents).
L’idée est de pouvoir indiquer ce que l’on exclus suite à la recherche effectuée. Cependant ce que l’on exclus ne dépend pas forcément d’un autre critère (sinon, on peut passer par Plugin « Critère {mots} »).
Ben
PS : Si je ne suis pas assez clair, merci de me le dire, je prendrais un exemple plus concret.

EDIT : Je vais mettre directement un exemple, ça sera plus clair :smile:

Imaginons que j’ai 150 articles sur des fruits (mais aussi d’autres articles sur d’autres choses).
Les articles ont un mot-clés « fruits » (et ne sont pas dans une rubrique « fruits », car chacun peut avoir plusieurs rubriques sinon).

Je fais une recherche par mots-clés et j’ai donc les 150 articles avec le mots-clés fruits qui apparaissent.
Je décide de ne pas garder banane, poire et cerise pour cette fois.

La fois suivante, je décide avec la même recherche d’exclure banane, pomme et ananas.

J’ai besoin de garder un lien vers ces 2 résultats pour les partager.

Bonsoir,
effectivement ce que tu veux faire n’est pas très clair !

Est-ce qu’il faut que ce soit différent pour chaque internaute ?
Si c’est une sorte de liste des favoris, essaye Mes Favoris 3.0 - SPIP-Contrib

Bonjour,
merci touti, c’est une solution que j’ai regardé.
Il faudrait cependant plusieurs listes pour mon besoin et « Mes favoris » n’indique pas comment cela est possible même si mentionné à la fin. De plus, si il faut ajouter les favoris un par un, c’est compliqué si la liste fait 150 articles.
Enfin (plus gros point pour moi), si des articles nouveaux s’ajoutent alors ils ne seront pas dans la liste partagée, mais exclus.


En clair, mon besoin est une recherche multi-critères en pré-tri, mais on peut affiner par la suite.

Pour l’instant, ce que j’ai vu de plus proche serait ce qui suit pour exclure les articles 20 et 23 dans l’exemple suivant.

#SET{links, 20|23}
<BOUCLE_block(ARTICLES){id_article IN #VAL{'|'}|explode{#GET{links}}}>

Ainsi, je pensais (si il n’y a pas mieux), à quelque chose comme :

  1. Faire une zone de texte permettant de rentrer des valeur (qui ne reste pas en BDD tant qu’à faire)
  2. Appeler ces valeurs en les mettant dans la boucle qui fait la recherche.

J’ai l’impression que ça passerait par des éléments comme #ENV |set ou |set_request mais je ne suis pas sûr et il y a peut être bien plus simple.

Bon, tu n’as toujours pas expliqué clairement ce que tu veux au final.
Pas avec des pommes/bananes mais quel est ton projet, ça permettrait de décortiquer tes phases de développement.

Tu dis

Faire une zone de texte permettant de rentrer des valeur (qui ne reste pas en BDD tant qu’à faire)

Tu veux créer un fichier texte mais qui n’existera pas ? :crazy_face: Essaye avec json et javascript dans ce cas.

SInon peut-être t’appuyer sur le fonctionnement du plugin « Mes favoris ». Sauf que tu en inverses le principe, ainsi les éléments stockés en favoris sont ceux qui sont à exclure. Au lieu d’un cœur tu mets une croix et tu adaptes tes squelettes en fonction ?

Salut,

Ta 1ere recherche plain text (normale quoi) doit construire un petit formulaire de mot clés avec des cases à cocher. En cochant ces cases et en relançant ta recherche elle pouvoir modifier ta requête pour exclure ceux-ci avec un critère du genre {id_mot ?!= #ENV{id_mot}} (pas testé, un bout de piste à étudier).

Commence par construire l’interface désirée. Ça pourrait aider à éclaircir. Car ensuite comme dit @Rastapopoulos « Tu peux faire absolument ce que tu veux » à partir de ce que ton interface fournit.

Tu peux faire absolument ce que tu veux, ça dépend quasi uniquement de ta boucle qui construit la liste de résultats. Dedans tu peux ajouter autants de critères (donc de filtres) que tu veux. Tel que (si c’est une boucle article) :
{!id_article IN #ENV{articles_exclus}}

Et ensuite tu remplis cette variable… comme tu veux ! Ça peut être par un formulaire dédié que tu veux… ça peut être tout aussi simplement par des liens dans la liste des résultats de recherche. Il faut jouer avec le filtre parametre_url. Du genre

#SET{articles_exclus, #ENV{articles_exclus, #LISTE}|push{#ID_ARTICLE}|array_unique}
<a href="[(#SELF|parametre_url{articles_exclus, #GET{articles_exclus})]">Exclure cet article des résultats</a>

Et évidemment en début de liste de résultats, il sera de bon ton de construire une liste des filtres déjà actifs, avec un lien pour les retirer un à un.

Bonjour,
merci à vous pour votre temps. Je vais effectivement partir sur l’interface et voir cela.
Je me colle là dessus.


Pour touti

  • Je souhaite faire une BDD collaborative sur des actions environnementales. (Partie OK, voici le projet pour les curieux : Actions RSE — Résilience des Territoires) Un peu du type OpenLCA, une BDD avec de outils LCA de traitement de données.
  • Cette BDD-ci pourra afficher les données en multi-critères de mots-clés. (Partie OK)
  • L’idée est de pouvoir par la suite exporter en CSV par exemple pour exploiter ces données.
  • Selon l’usage, un tri multi-critère ne suffira jamais pour avoir juste ce que l’on souhaite d’où le fait de pouvoir exclure des contenus par la suite. (Il reste toujours la possibilité d’effacer les lignes dans le CSV sinon, mais pas super élégant et on ne peut pas partager un lien).