Re : [Spip] SPIP : certains groupes de mots clefs limités à certaines rubriques ?

Julien VILLALARD a écrit :

Bonjour,

Merci de cette rapide réponse.

Je vais devoir effectivement modifier le code source de SPIP dans un premier temps. Je vous enverrai bien sûr le code pour intégration éventuelle dans votre plugin.

Salut,
ce n’est pas MON plugin je n’ai fait qui rajouter une fonctionnalité… Les auteurs sont plutot mortimer et stéphane :slight_smile:

Je pense que cela serait utile pour ne pas alourdir l’interface d’administration de ne pas afficher TOUS les groupes de mots clefs alors que certains ne servent souvent que pour certaines rubriques.

Je suis de cet avis mais ca impose quelques contraintes techniques.
Bref enfin cela doit se discuter sur la liste spip-zone.

J’en profite pour une autre question : existe-t-il un moyen simple avec des balises SPIP pour faire une recherche sur plusieurs mots clefs à la fois (la contribution de Paul sanches sur le sujet revient à faire du php) ?

je rappelle juste le lien de cette contrib : par contre tu pourrais lire aussi ceci : regarde les boucles de ce plugin ( qui surcharge formulaire_recherche et recherche.html ) Oui tout a fait … il faudrait écrire peut-etre un truc la dessus : C’est le probléme récurent d’une recherche multicritére ( que l’on a évoqué aussi au dernier spip-apéro a toulouse ) : 2 solutions a cela soit tu passes une seule variable dans ton url et tu fais ce que j’ai fait en dessous soit tu passe autant de variables que de critéres et tu fais en gros la même chose avec {doublon} mais je ne suis persuadé que de passé plusieurs {id_mot=xx} dans tes critéres ne te fasse pas un ET logique … dans l’url avoir mes_mots=12-23-34 et pour le récupérer faire une fonction dans mes fonctions contenant cela : function recupere_liste($liste,$cle){ $mot=explode(« - »,$liste); return $mot[$cle]; } et pour le récupérer [(#ENV{mes_mots}|recupere_liste{1})] oui c’est possible : je vois une solution avec {doublon} mais je ne suis pas sur que ce soit la plus efficace. <BOUCLE_mot1(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{1})]}> <BOUCLE_article1(ARTICLES){doublons maselection}> </BOUCLE_article1> </BOUCLE_mot1> <BOUCLE_mot2(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{2})]}> <BOUCLE_article2(ARTICLES){doublons maselection}> </BOUCLE_article2> </BOUCLE_mot2> <BOUCLE_mot3(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{3})]}> <BOUCLE_article3(ARTICLES){doublons maselection}> </BOUCLE_article3> </BOUCLE_mot3> <BOUCLE_article_final(ARTICLES){!doublons maselection}> #TITRE </BOUCLE_article_final> c’est a tester. Il doit exister des solutions peut-etre plus pratique en fonction de ton besoin notamment en faisant une boucle FOREACH sur un tableau #ARRAY et donc en transformant ton get en #ARRAY et en bouclant dessus. comme ca si tu passe 3 ou 5 mots ca fonctionnerait de la même façon :slight_smile: en espérant t’avoir assez aider pour que ton probléme soit résolu :slight_smile: éventuellement si tu peux écrire quelque chose sur contrib suite a tout ca ou rajouter des infos

Yoann NOGUES (zerax) a écrit :

Salut,
ce n'est pas MON plugin je n'ai fait qui rajouter une fonctionnalité... Les auteurs sont plutot mortimer et stéphane :slight_smile:

non, non, c'est le plugin de Pierre.
il m'a ajouté comme auteur mais c'est à lui que revient ce titre, d'autant que je n'ai pas été foutu de maintenir correctement l'interface d'ajout des mots qui est quand meme la base de ce plugin....

Par contre il faudrait effectivement ajouter tous les contributeurs dans plugin.xml avec qui a ajouté quoi (il y a des commit de gilles et arnaud je crois).

Je pense que cela serait utile pour ne pas alourdir l'interface d'administration de ne pas afficher TOUS les groupes de mots clefs alors que certains ne servent souvent que pour certaines rubriques.

Je suis de cet avis mais ca impose quelques contraintes techniques.
Bref enfin cela doit se discuter sur la liste spip-zone.

amha, tu peux ajouter une case à cocher "avec enfants" au niveau des groupes de mots quand tu actives l'arborescence.

La notion est différente de mots clés techniques et meme de la catégorisation des groupes dont on a déjà parlé une fois ou 2 (qui est sans doute aussi indépendante de la notion de technique qui devrait se contenter de gérer l'affichage ou non dans l'espace public par la boucle MOTS standard)

J'en profite pour une autre question : existe-t-il un moyen simple avec des balises SPIP pour faire une recherche sur plusieurs mots clefs à la fois (la contribution de Paul sanches sur le sujet revient à faire du php) ?

il faut sans doute créer un critère pour gérer du ET dans les criteres avec jointure.
La c'est vrai qu'on a pas de solution simple, et qu'avec des inclures, ca devient carrément casse pied à monter.

le critere frequence de nuage2 n'est pas fini mais il doit etre un bon point de depart (il faut faire des jointures, ajouter des count(j1.id_xxx) as x1 et des HAVING COUNT(x1)>0)

Question subsidiaire : comment fait-on sous SPIP pour obtenir tous les articles répondant à plusieurs mots clefs (ET logique) ?

dans l'url avoir mes_mots=12-23-34
et pour le récupérer faire une fonction dans mes fonctions contenant cela :
function recupere_liste($liste,$cle){
$mot=explode("-",$liste);
return $mot[$cle];
}
et pour le récupérer [(#ENV{mes_mots}|recupere_liste{1})]
oui c'est possible : je vois une solution avec {doublon} mais je ne suis pas sur que ce soit la plus efficace.

<BOUCLE_mot1(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{1})]}>
<BOUCLE_article1(ARTICLES){doublons maselection}>
</BOUCLE_article1>
</BOUCLE_mot1>
<BOUCLE_mot2(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{2})]}>
<BOUCLE_article2(ARTICLES){doublons maselection}>
</BOUCLE_article2>
</BOUCLE_mot2>
<BOUCLE_mot3(MOTS){id_mot=[(#ENV{mes_mots}|recupere_liste{3})]}>
<BOUCLE_article3(ARTICLES){doublons maselection}>
</BOUCLE_article3>
</BOUCLE_mot3>

<BOUCLE_article_final(ARTICLES){!doublons maselection}>
#TITRE
</BOUCLE_article_final>

c'est a tester.

moi je fais ca en passant le tableau sérialisé dans mes_mots, mais la grosse limite, c'est qu'il faut connaitre le nombre de mots attendus et adapter le squelette.

Mais on peut sans doute faire un truc plus malin avec une boucle récursive ou un foreach en attendant un tableau (id_mot) en entrée.

je crois que la plus grosse galère, c'est que le traitement ne sera pas le meme selon qu'on est dans un inclure ou non (en 1.9.2 je crois qu'il sérialise les critères passés aux inclures, meme avec **, je ne sais pas si ca a changé depuis)

@++

Stephane a écrit :

non, non, c’est le plugin de Pierre.

il m'a ajouté comme auteur mais c'est à lui que revient ce titre, 
d'autant que je n'ai pas été foutu de maintenir correctement l'interface 
d'ajout des mots qui est quand meme la base de ce plugin....
  

je vais passer ca avec recuperer_fond assez rapidement car la avec l’interface simplifiée d’ajout de mots ca devient n’importe quoi :stuck_out_tongue:

Par contre il faudrait effectivement ajouter tous les contributeurs dans 
plugin.xml avec qui a ajouté quoi (il y a des commit de gilles et arnaud 
je crois).
  

ok mais je ne ferai que ma partie, je laisse le soin aux autres de décrire ce qu’ils ont fait, ou le choix d’y figurer

  
Je pense que cela serait utile pour ne pas alourdir l'interface 
d'administration de ne pas afficher TOUS les groupes de mots clefs 
alors que certains ne servent souvent que pour certaines rubriques.

      
Je suis de cet avis mais ca impose quelques contraintes techniques.
Bref enfin cela doit se discuter sur la liste spip-zone.
    

amha, tu peux ajouter une case à cocher "avec enfants" au niveau des 
groupes de mots quand tu actives l'arborescence.
  

ce qui permettrait d’avoir eventuellement un critére de choix des groupes de mots non arborescents et de simplifier la saisie.
pourquoi pas :slight_smile:

La notion est différente de mots clés techniques et meme de la 
catégorisation des groupes dont on a déjà parlé une fois ou 2 (qui est 
sans doute aussi indépendante de la notion de technique qui devrait se 
contenter de gérer l'affichage ou non dans l'espace public par la boucle 
MOTS standard)

  
 

J'en profite pour une autre question : existe-t-il un moyen simple 
avec des balises SPIP pour faire une recherche sur plusieurs mots 
clefs à la fois (la contribution de Paul sanches sur le sujet revient 
à faire du php) ?
      

il faut sans doute créer un critère pour gérer du ET dans les criteres 
avec jointure.
  

ce serait l’idéal :slight_smile:

La c'est vrai qu'on a pas de solution simple, et qu'avec des inclures, 
ca devient carrément casse pied à monter.
  

je confirme:p

le critere frequence de nuage2 n'est pas fini mais il doit etre un bon 
point de depart (il faut faire des jointures, ajouter des 
count(j1.id_xxx) as x1 et des HAVING COUNT(x1)>0)

  
Question subsidiaire : comment fait-on sous SPIP pour obtenir tous les 
articles répondant à plusieurs mots clefs (ET logique) ?
      
    

moi je fais ca en passant le tableau sérialisé dans mes_mots, mais la 
grosse limite, c'est qu'il faut connaitre le nombre de mots attendus et 
adapter le squelette.

Mais on peut sans doute faire un truc plus malin avec une boucle 
récursive ou un foreach en attendant un tableau (id_mot[]) en entrée.
  

la boucle foreach me parait comme ca priori la meilleure solution … maintenant vu que je n’ai jamais utilisé cette boucle… je ne serais pas d’un bon conseil

je crois que la plus grosse galère, c'est que le traitement ne sera pas 
le meme selon qu'on est dans un inclure ou non (en 1.9.2 je crois qu'il 
sérialise les critères passés aux inclures, meme avec **, je ne sais pas 
si ca a changé depuis)
  

ca me dépasse la