Plugin « Critère {mots} »

Permettre de sélectionner facilement des objets SPIP ayant un ou des mots clefs en communs.

Présentation

Il peut arriver parfois de vouloir sélectionner des objets SPIP (articles, rubriques, sites etc.), ayant un certains nombre de mot clefs communs.

Par exemple, je voudrais sélectionner les articles ayant les mots clefs « fruits » et « desserts », mais pas ceux qui n’ont que « desserts » ou que « fruits ».

Une telle opération, bien que possible, est assez difficile en SPIP ... sauf si vous utilisez ce plugin.

Il s’installe comme n’importe quel plugin.

Il propose trois critères :
-  {mots}
-  {mots_selon_id}
-  {mots_selon_titre}

Dans une boucle, il ne faut utiliser qu’un seul de ces critères.

Le critère {mots}

Prenons un exemple :

<BOUCLE_art(ARTICLES){mots}>
#TITRE
</BOUCLE_art>

Cette boucle sélectionnera les articles ayant tous les mots clefs passés en paramètres d’environnement dans un tableau « mots ».

Comment passer ces mots-clefs en paramètres d’environnement ?

Typiquement, sur une page principale (non incluse), via des paramètres dans l’url. Par exemple : http://www.toto.fr/?page=toto&amp;mots[0]=1&amp;mots[1]=2.

Ici, j’ai passé dans le tableau ’mots’ les valeurs 1 et 2. Les articles associés, à la fois au mot dont l’id est 1 et à celui dont l’id est 2 seront sélectionnés [1].

Les valeurs du tableau ’mots’ peuvent être des identifiants de mots (1, 2) ou des titres de mots (« fruits », « desserts »).

Attention au cas où des mots clefs sont uniquement sous forme de nombre ...

Le critère {mots_selon_id}

Il fonctionne exactement comme le critère {mots}, à ceci près que les valeurs du tableau ’mots’ sont forcément des identifiants de mots (1,2).

Le critère {mots_selon_titre}

Il fonctionne exactement comme le critère {mots}, à ceci près que les valeurs du tableau ’mots’ sont forcément des titres de mots (« fruits »,« desserts »).

Les paramètres supplémentaires

Les trois critères {mots},{mots_selon_id} et {mots_selon_titre} peuvent prendre trois paramètres : ’score’, ’tableau’, ’tri’. Sous la forme {mots score tableau}.

Le paramètre ’score’.

Par défaut, le critère {mots} prend les objets ayant tous les mots passés en paramètre. On peut décider de vouloir prendre ceux ayant au moins un certain nombre de mots passés paramètre, mais pas nécessairement tous. C’est à cela que sert le paramètre ’score’.

-  Si score est compris entre 0 et 1 (exclus), alors SPIP sélectionnera les objets ayant au moins ce pourcentage de mots [2] sur le total des mots passés en paramètre. Par exemple si j’écris {mots 0.5}, et que je passe 10 mots en paramètre, alors SPIP sélectionnera les objets ayant au moins 10*0.5 = 5 des mots passés en paramètre.
-  Si score est supérieur ou égale à 1 et suivi du signe « % », alors SPIP sélectionnera les objets ayant au moins ce pourcentage sur le total des mots passés en paramètre. Par exemple si j’écris {mots 50%}, et que je passe 10 mots en paramètre, alors SPIP sélectionnera les objets ayant au moins 50% de 10 = 5 des mots passés en paramètre.
-  Si score est supérieur ou égale à 1, mais n’est pas suivi du signe « % », alors SPIP sélectionnera les objets ayant au moins ’score’ mots passés en paramètres. Par exemple {mots 5} sélectionnera les objets ayant au moins 5 mots passés en paramètre.

Le paramètre ’tableau’.

Par défaut, SPIP prend comme tableau la variable d’environnement ’mots’. Mais on peut lui dire, via ce paramètre, de prendre un autre tableau.

Ce peut être un tableau :
-  calculé via #GET et #SET
-  inscrit en dur via #ARRAY
-  passé en variable d’environnement, et appelé via #ENV.

Ex : {mots 100% #ARRAY{0,2,1,1}} sélectionnera les objets ayant les mots clefs 2 et 1. Notez qu’il est obligatoire de donner une valeur au paramètre ’score’ pour utiliser ’tableau’, sinon SPIP les confond.

Le paramètre ’tri’

Ce paramètre, existant depuis la version 2.1 (sous SPIP 3) ou 1.3 (sous SPIP 2.1 et 2.0) peut prendre deux valeurs :
-  tri pour trier la boucle en fonction du nombre de mots du tableau associés, en commençant par le plus petit nombre.
-  !tri pour trier la boucle en fonction du nombre de mots du tableau associés, en commençant par le plus grand nombre.

Exemple  :

L’article 1 est associé aux mots 1,2,3 ; l’article 2 est associé aux mots 2,3,4,5,6.

{mots 2 #LISTE{1,2,3} !tri} affichera d’abord l’article 1, puis l’article 2.
En effet, l’article 1 est associé à 3 mots dans la liste (1,2,3), tandis que l’article 2 n’est associé qu’à 2 mots dans la liste (2,3).

Formulaire de sélection

Avec la version 1.1 de ce plugin, une nouvelle possibilité s’offre à vous : faire appel à un formulaire bâtissant pour vous les critères dans l’url pour filtrer selon plusieurs mots clefs.

Connecté en tant que webmestre, vous pouvez tester avec la page de démonstration : /?page=demo/parmots.

Le formulaire présente dans un premier temps la liste de vos groupes de mots clefs.

Dès que vous en choisissez un dans la liste, automatiquement [3], la liste des mots clefs de ce groupe est affichée juste à côté.

Choisissez un mot clef, et ce dernier et ajouté à l’URL pour ne vous présenter que les articles ayant ce mot clef.

Et le processus peut être répété autant de fois que nécessaire.

Bonus : la liste des mots clefs déjà choisis est affichée sous le formulaire. Chaque mot est cliquable. Un clic le supprime de l’URL et de la liste.

Le formulaire critère mots en action

Usage du formulaire

-  Sur une seule page

  • en affichant tous les groupes de mots :
    <div class="ajax">
    [(#FORMULAIRE_RECHERCHE_PAR_MOTS)]
    </div>
  • en n’affichant que certains groupes de mots :
    #SET{FiltreGroupes,#ARRAY}
    <BOUCLE_FiltreGroupes(GROUPES_MOTS){titre==^[^_]}>
    #SET{FiltreGroupes,
           #GET{FiltreGroupes}|push{#ID_GROUPE}}
    </BOUCLE_FiltreGroupes>
    <div class="ajax">
    [(#FORMULAIRE_RECHERCHE_PAR_MOTS{#GET{FiltreGroupes}})]
    </div>

    Ici, on a choisi de ne pas afficher les groupes de mots commençants par « _ ».

-  On peut aussi utiliser le formulaire sur toute les pages du site pour renvoyer sur une page de résultats :

[(#FORMULAIRE_RECHERCHE_PAR_MOTS{'',#URL_PAGE{pagederesultats}})]

NB :

  • le premier paramètre est un tableau d’identifiants de groupes, ou la chaine vide
  • le deuxième paramètre est l’URL de la page qui affiche les résultats.

Usage avec le plugin Mots arborescents

Par défaut, seul le mot-clé demandé est recherché.

Mais il est possible de trouver via n’importe quel mot-clé de la branche du mot-clé demandé en mettant dans mes_options.php :

if (!defined('_CRITERE_MOTS_ARBO_BRANCHE'))
    define('_CRITERE_MOTS_ARBO_BRANCHE', true); 

Notes

[1Pour des pages incluses, il suffit de passer {mots} comme paramètre d’inclusion.

[2Car un nombre entre 0 et 1 est un pourcentage

[3Si vous n’avez pas désactivé javascript

NOTA SPIP branche 2.*

Attention : la partie formulaire de ce plugin ne fonctionnera pas avec la version 2.0.10 de SPIP. Il faut :

On pourra utiliser le plugin pour, par exemple afficher les articles connexes.

Discussion

74 discussions

  • 3

    Excellent !

    Est-ce que vous pensez possible de rajouter un critère de tri par nombre de mots trouvés ?

    Par exemple, je demande à avoir au moins 1 mot en commun, mais je voudrais mettre en avant ceux qui en ont plus...

    • heu desolé, je ne connais pas assez le mysql pour faire cela. Peut-être que c’est possible, mais il faudrait que je me plonge dedans. Peut-être cet été.

    • Bonjour et merci,
      tres utile
      La nouvelle version permet-elle de resoudre ce pb
      Bruno

    • pas à ma connaissance

    Répondre à ce message

  • Je n’aurais que 2 mots : « BRAVO » et « MERCI » ! :-)

    Répondre à ce message

  • 4

    Une dernière petite question :

    J’ai mis le formulaire sur la page mot puisque j’ai une navigation exclusivement par mot clé !. j’arrive donc toujours sur cette page en ayant suivi un lien mot.
    J’aurais souhaité que l’id_mot que j’ai suivi soit prise en compte dans le tableau. Sans pour autant devoir modifier partout les liens sur les mots clés.

    Est-ce possible ?

    • très probablement. Ce n’est pas moi qui ait créé ce formulaire, mais je suppose qu’il y a moyen de le modifier pour lui passer un paramètre id_mot. Après là je n’ai pas le temps de regarder exactement comment faire.

    • Quelqu’un pourrait juste m’expliquer comment ajouter une id_mot récupérer dans les variables environnementales dans le tableau mots ?

      Merci d’avance

    • merci de commencer un nouveau fil par nouveau sujet ;-)

      pour le problème, un exemple de code aurait-été bon. Mais je t’envoie quand même vers la doc de la balise #ARRAY, qui devrait t’aider. Et si tu n’y arrive pas, et bien reviens :-) http://www.spip.net/fr_article4009.html

    • Désolé mais je n’ai fait que continuer mon fil ! j’ai juste oublié de m’identifier !
      Voila où j’en suis :

      Au début de ma page mot, j’ai rajouté cette ligne :
      [(#SET{mots,[(#ENV{mots, #ARRAY{}}|push{#ENV{id_mot}})]})]

      J’ai donc bien rajouté mon id_mot dans le tableau.

      Seulement si j’inclus le formulaire recherche_par_mot sur la page mot en utilisant la balise #FORMULAIRE_RECHERCHE_PAR_MOTS, il va chercher la valeur du tableau en ENV et non en GET et ne tient donc pas compte de mon ajout.

      J’essaie donc de mettre mon formulaire dans une noisette pour passer ma nouvelle variable mais ça ne change rien. Il me manque un truc mais je ne trouve pas pour le moment !

    Répondre à ce message

  • 6

    j’ai découvert ce plugin avant de commencer à développer mon site et je l’ai trouvé génial pour moi car j’envisageais une navigation par mots clés uniquement. J’y ai donc tout de suite vu une très bonne manière pour l’utilisateur de rajouter ou d’enlever des filtres de navigation.

    Mais voilà, j’ai fait des choix lors de mon développement, notamment celui d’utiliser le plugin-squelette zpip et de démarrer avec un thème de départ à modifier.

    Seulement voilà, au moment de mettre en place le plugin, je réalise qu’il ne fonctionne plus. Le formulaire affiche le select pour les groupes mais apres le choix, le select pour les mots du groupe ne s’affiche pas.

    Apres avoir longtemps cherché, j’ai réalisé que le plugin fonctionnait si je changeais simplement le thème appliqué. j’en déduit donc que le thèmes tincrédible est coupable. Seulement voilà, j’en suis à un stade où je ne peux plus m’en passer. je dois donc trouver le pkoi du comment.

    Si vous aviez une piste ou deux à explorer !!! Merci d’avance !

    • cela m’étonne que le thème trincredible empêche l’affichage. Un thème gère la présentation, pas le contenu. Vous auriez un site exemple ?

    • Je peux le mettre en ligne sur mon pc si vous êtes encore là !
      http://78.230.32.35/

    • J’ai mis le switcher de thèmes ! La preuve est qu’il suffit de changer de thèmes pour que cela fonctionne.

    • effectivement !

      pour le coup je pense que c’est thincredible qui met du js qui pose des soucis avec l’ajax natif de spip. Tu a essayer une pagination ajax par exemple ? ou un autre formulaire en ajax ?

      le mieux serait de demander sur le forum de tincredible

    • Les paginations fonctionnent et j’ai fait d’autres inclusions en ajax avec passage de variables qui fonctionnent.

      En tous cas merci d’avoir regardé !

    • Ben voilà ! Tu m’as mis sur la piste ! C’est bien le script pour le slider de la page d’accueil et qui était chargé dans le header directement depuis la surcharge du thèmes qui était en conflit ! Ce qui est étonnant car l’ajax fonctionnait malgré tout jusque là !

      Bref ! j’ai déplacé le script sur la noisette du slider et le tou est joué !

      Merci

    Répondre à ce message

  • 4
    Christophe BORD

    Bonjour,

    En utilisant ce plugin de la manière décrite avec un paramètre d’inclusion je rencontre un écueil :

    Dans un premier squelette je calcule un tableau criteres avec #SET et j’aimerais le passer comme paramètre à mon inclusion.

    #SET{criteres, #VAL{}|tabCriteres{#ENV{id_mot}}}

    tabCriteres est un filtre qui me renvoie un tableau, cette partie fonctionne.
    ....

    <INCLURE{fond=inc-syndic-tous}{{ {criteres} }}>

    Dans le second squelette inclus se trouve ma boucle :

    <BOUCLE_articles(ARTICLES){mots 100% #GET{criteres}}{par date}{inverse}>

    Ma boucle ne me donne pas de résultats. Avant l’inclusion le tableau compte pourtant bien plusieurs éléments. Quelque chose m’échappe ?

    • Christophe BORD
      <INCLURE{fond=inc-syndic-tous}{criteres}>

      Les parenthèses surnuméraires sont une étourdrier de ma part, je voulais mettre en gras.

    • le passage des #SET ne se fait pas automatiquement dans les squelettes inclus. Ce sont les #ENV qui le font.

      Donc pour toi il faudrait que tu fasse :

      <INCLURE{fond=inc-syndic-tous}{criteres=#GET{criteres}}>

      Cela signifie que tu passe comme paramètre d’environnement criteres le contenu de #GET{criteres}
      et dans le squelette inclus :

      <BOUCLE_articles(ARTICLES){mots 100% #ENV{criteres}}{par date}{inverse}>
    • Christophe BORD

      Merci Maieul, ca m’avait complètement échappé.

    • Christophe BORD

      Si en plus le critère est optionnel
      {mots? 100% #ENV{criteres}}
      fonctionne très bien.
      Comme ça n’allait pas de soi en ce qui me concerne, ça peut peut être servir à d’autres.

    Répondre à ce message

  • 4

    Bonjour

    J’aimerais afficher la liste complète des mots clefs discriminants.

    J’arrive à récupérer une liste d’articles associée à des mots clefs,
    mais comment peut on récupérer les mots cléfs supplémentaires utiles pour affiner la recherche ?
    C’est à dire qu’après avoir récupérer les articles ayant le mot clef A,
    une liste me propose les mots clefs B et C car un article possède les mot A et B
    et un autre les mots A et C.
    C’est ce que semble faire l’exemple fourni dans le plugins dans les SELECT,
    mais j’aimerais afficher une liste directement cliquable des mots clefs « ajoutables »
    comme l’est actuellement celle des mots clef « supprimables » dans l’exemple.
    Cela serait extremement pratique comme mode de recherche.

    Est ce possible ?

    Merci beaucoup

    • oui c’est possible (même si je ne comprend pas tout ce que tu veux). Tu connais un peu ou pas du tout le système de boucles de SPIP ?

    • je connais un peu oui, je me débrouille avec les boucles de base

      pour préciser mon idée :

      • on affiche tous les mots clefs (facile je sais faire)
      • on clique sur l’un d’entre eux
      • la liste des articles ayant se mot clef s’affiche (facile je sais faire)
      • la liste des mots clefs se mets a jour pour ne laisser que les mots clefs supplémentaires également liés aux articles affichés précédemment (là je sèche)

      cas pratique :

      • j’ai 4 mots clefs A, B, C et D
      • 2 articles
        • article 1 mot clef A B
        • article 2 mot clef A C
      • la liste des mots clefs s’affiche : A B C D
      • je clique sur A
      • on m’affiche l’article 1 et 2 et les mots clefs B et C (mais pas D car il ne permet pas d’affiner sa recherche)
      • je clique sur B
      • seul l’article 1 s’affiche et la liste des mots clefs est vide (on est au bout des sélections possibles)
      • une autre liste affiche les mots clefs sélectionnés pour les supprimer d’un clic (comme dans l’exemple fourni avec le plugins)

      Merci

    • Alors il faut que tu stocke dans un tableau (#ARRAY) les id_article associés aux mots déjà sélèctionnés. Puis que tu fasse une boucle mots en prenant comme critère les id_articles de ce tableau.

      Quelquechose du genre :

      #SET{id_articles,#ARRAY}
      <BOUCLE_articles(ARTICLES){mots}>
      #SET{id_articles,#GET{id_articles}|push{#ID_ARTICLE}}
      </BOUCLE_articles>
      
      
      
      <BOUCLE_mots_articles(MOTS){id_article IN #GET{id_articles}}>
      #ID_MOT
      </BOUCLE_mots_articles>
      
      </B_articles>
      <BOUCLE_mots(MOTS)>
      #ID_MOT
      </BOUCLE_mots>
      <//B_articles>
    • merci je vais tester ca

    Répondre à ce message

  • 2

    salut,

    J’ai mis en place un moteur de recherche voir l’image jointe, mais en dehors des mots j’ai un champ input que l’internaute doit remplir. Pour l’instant si je choisis les mots clés j’ai un résultat par contre si je cherche la présence d’un mot dans les titres des articles ou dans les textes en tapant un mot dans le champ input j’ai pas de résultat. Est ce quelqu’un peut m’aider ??

    • les mots qu’on frappe dans le input doivent être cherché parmis les mot clefs ou dans le corps du texte ?

      tu a ton code ?

    • Merci de votre réponse

      finalement ca marche, les mots qu’on frappe dans le input doit cherché dans le corps du texte

      voici quand même le formulaire :

      <form action="spip.php?page=resultat" method="get" >
      		
      						<input name='page' value='resultat' type='hidden' />
      						[<input name='lang' value='(#ENV{lang})' type='hidden' />]
      
      				      
      					  
      					   <!-- la chaine cherchee -->					
      						<input type="text" class="forml" name="recherche" id="recherche-avancee" value="#RECHERCHE"  />	
      	
      
      						<B_g1>
      						<select name="mots[0]">
      						<BOUCLE_g1(GROUPES_MOTS){id_groupe IN 3}>
      						<option value="">#TITRE</option>
      						<BOUCLE_surmot(MOTS){id_groupe}{par multi titre}>
      						<option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
      						</BOUCLE_surmot>
      						</select>
      						</BOUCLE_g1>
      						</B_g1>
      
      
      						<B_g2>
      						<select name="mots[1]">
      						<BOUCLE_g2(GROUPES_MOTS){id_groupe IN 4}>
      						<option value="">#TITRE</option>
      						<BOUCLE_surmot2(MOTS){id_groupe}{par multi titre}>
      						<option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
      						</BOUCLE_surmot2>
      						</select>
      						</BOUCLE_g2>
      						</B_2>
       <input type="submit" class="bouton" value="<:rechercher:>" />
       </form>

      Pour la page resultat :

    Répondre à ce message

  • 4

    Salut tout le monde,
    J’utilise ce plugin pour afficher le resultat de la recherche sur un carte googlemaps, mais jusque là j’ai pas le resultat correcte est ce quelqu’un sy connait et voudrait bien m’aider.

    voici mon formulaire

    <form method="post" name="mot"  action="spip.php?page=resultat">
    <select name="mots[0]">
    <BOUCLE_grr(GROUPES_MOTS){id_groupe=4}>
    [<option value="">#TITRE</option>]
    <BOUCLE_mots5(MOTS) {id_groupe}>
    <option value="#ID_MOT">#TITRE</option>
    </BOUCLE_mots5>
    </BOUCLE_grr>
    </select>
    <select name="mots[1]">
    <BOUCLE_grrr(GROUPES_MOTS){id_groupe=2}>
    [<option value="">#TITRE</option>]
    <BOUCLE_mots6(MOTS) {id_groupe}>
    <option value="#ID_MOT">#TITRE</option>
    </BOUCLE_mots6>
    </BOUCLE_grrr>
    </select>
    			
     <input type="submit" value="<:info_rechercher:>" name="ok">
     </form>

    et voici ce que j’ai sur la page resultat.html

    [(#MODELE{carte_gis}{mots?}{limit=4000}{recherche ?}
    		{latit=-1.990}{lonxit=29.891}{zoom=8}{type=carte}{control_type=oui}{zoom_molette=non}{attente=1})]

    Comme vous le voyez j’ai bien mis mots ? sur l’inclusion du modele de la carte et pourtant j’ai pas les bons resultats. Ou bien cela ne marcherai qu’avec les boucles articles et NON sur une carte googlemaps ???

    PS : sur la carte je dois avoir les articles attachés aux mots clés choisit

    Merci de votre réponse

    • a tu hasard : ton #MODELE est-il appelé dans un fichier lui même inclus. Si oui, lui passe tu correctement l’option mots ?

    • Merci de votre réponse mais je suis toujours dans la galère. Le modèle carte_gis est dans un dossier modele qui se trouve à la racine du plugin gis. Alors je sais que si j’appel le modèle en faisant #MODELEcarte_gis je dois ajouter mots ? ce que j’ai fais mais rien ne marche.

    • je parlais du squelette qui appel #MODELE{carte_gis} : est-il lui même appelé par un autre squelette ?

    • le modele carte_gis est appelé unique dans le squelette resultat.html pour afficher les articles sur la carte. et le squelette resultat est utilisé dans le formulaire
      <form method="post" name="mot"  action="spip.php?page=resultat">
      Alors est ce que je dois passer l’option mots sur "spip.php?page=resultat" ? si oui comment.?

      Merci encore pour votre aide, je ne suis pas bien en dev je me débrouille tout simplement

    Répondre à ce message

  • 3

    Bonjour tout le monde,

    J’utilise un formulaire, j’affiche 3 groupes et chaque groupe a ses propres mots clés. Mais je ne sais ce qu’il faut faire (quelle boucle) pour afficher les resultats correctement.
    1/ si on choisit un mot clé que les articles attaché a ce mot s’affichent
    2/ si on choisit deux mots clés qu’on ai la liste des articles qui sont attachés a ces deux mots clé(uniquement) sinon rien ....etc etc
    voici le code qui affiche mon formulaire :

    <form method="post" name="mot"  action="spip.php?page=recherche2">
    <select name="mots[0]">
    <BOUCLE_gr(GROUPES_MOTS){id_groupe=2}>
    [<option value="N">#TITRE</option>]
    <BOUCLE_mots4(MOTS){id_groupe}>
    <option value="#ID_MOT">#TITRE</option>
    </BOUCLE_mots4>
    </BOUCLE_gr>
    </select>
    
    <select name="mots[1]">
    <BOUCLE_grr(GROUPES_MOTS){id_groupe=3}>
    [<option value="N">#TITRE</option>]
    <BOUCLE_mots5(MOTS) {id_groupe}>
    <option value="#ID_MOT">#TITRE</option>
    </BOUCLE_mots5>
    </BOUCLE_grr>
    </select>
    
    <select name="mots[2]">
    <BOUCLE_grrr(GROUPES_MOTS){id_groupe=4}>
    [<option value="N">#TITRE</option>]
    <BOUCLE_mots6(MOTS) {id_groupe}>
    <option value="#ID_MOT">#TITRE</option>
    </BOUCLE_mots6>
    </BOUCLE_grrr>
    </select>
    
    <input type="submit" value="Submit" name="ok">
    </form>

    dans la page recherche2 j’ai ca :

        <ul>
        <BOUCLE_articles1(ARTICLES){mots?}>
    		  <li><a href="#URL_ARTICLE">#TITRE</a></li>
    		</BOUCLE_articles1>
         </ul>

    mais j’ai pas le resultat que je cherche, surtout pour les 2 point que j’ai cité en haut par contre si je choisis 3 mots clé ,s’ils ont un article commun il s’affiche

    Merci de votre aide

    • Je pense qu’il faudrait que vous ne mettiez pas de value à la balise option affichant le titre des groupes.

    • Bonjour,
      J’ai une question suivant cette logique....Et si ma recherche se limiter dans une rubrique ??? parce qu’ avec ce formulaire la recherche se fait dans tout le site mais je me demande si on devait se limiter dans une seule rubrique ?
      j’ai essayé de changer la boucle du resultat comme ca mais sans succer :

       
      <ul>
         <BOUCLE_articles1(ARTICLES){mots?}{id_rubrique}>
                        <li><a href="#URL_ARTICLE">#TITRE</a></li>
                      </BOUCLE_articles1>
          </ul>

      Merci de votre réponse

    • si votre boucle n’est pas dans un boucle rubriques, il ne va pas savoir de quelle rubrique on parle.

      il faudrait que vous mettiez

      {id_rubrique=NNN} où NNN est le numéro de la rubrique.

      Il faudrait pour plus détail le contexte de boucle.

    Répondre à ce message

  • 6

    Bonjour,

    étant débutant sur spip, je n’ai pas bien compris comment marche le plugin critères.

    Mon objectif : sur ma page articles, avoir une zone « voir aussi » avec des articles partageant des mot clés avec l’article courant.

    Un bout de code-test où j’essaye d’ afficher le titre des articles ayant les mots clés n°33 et 30)

    #SET{mots, #ARRAY{0,33,1,30}
    <BOUCLE_articles(ARTICLES){mots}>
    #TITRE
    </BOUCLE_articles>

    Rien ne passe et dans le debug de spip j’obtiens ceci pour le résultat de la boucle :

    SELECT articles.id_article, articles.titre, articles.id_rubrique, articles.lang
    FROM spip_articles AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXJ0aWNsZXM8L2NvZGU+"></span>
    WHERE (articles.statut = 'publie')
    	AND 0=1

    Merci beaucoup pour votre aide

    • Bon,

      c’est expliqué dans la documentation, mais je reprend.

      <BOUCLE_articles(ARTICLES){mots}>

      En l’état, cela va utiliser le tableau mots passés en Environnement (voir mon article sur la balise #ENV), là vous avez mis non dans un tableau d’environnement mais dans une variable de type SET / GET.

      Suiant le manuel dans la partie « les paramètres supplémentaires », vous devez passer un tableau en 3 paramètre.

      Ce qui donne :

      #SET{mots, #ARRAY{0,33,1,30}}
      <BOUCLE_articles(ARTICLES){mots 100% #GET{mots}}>
      #TITRE
      </BOUCLE_articles>
    • Tout marche ! Merci beaucoup pour l’aide et ce plugin !

      Dernières question:s

      Dans la boucle

      Si je rajoute en critères 0,5, les articles listés seront affichés dans quel ordre ? au hazard ?
      Existe-t-il une astuce pour que les 5 articles listés soient triés des plus « similaires » aux moins similaires ?

      Clem

    • par défaut les articles seraient triés par identifiant (numero).

      vous pouvez utiliser n’importe quel filtre de tri de SPIP.

      Par contre, pour « du plus similaire au moins similaire » je vois pas, ne comprenant pas ce que vous entendez par « similaire ».

    • Un exemple pour ilustrer le mot « similaire »

      Un article A possède ces mots clés :
      -  toto
      -  blibli
      -  blabla

      Un article B possède ces mots clés :
      -  toto
      -  blibli
      -  dsqgcdsqg

      Un article C possède ces mots clés :
      -  toto
      -  sdbsdh
      -  hgsqjdgsd

      L’article B est « similaire » à 66% avec l’article A
      L’article C est « similaire » à 33% avec l’article A

      Existe-t-il un critère de tri ou une astuce pour mettre l’article B en premier et l’article C en deuxième ?

    • désolé, là comme cela je ne vois pas.

      il faudrait que je creuse le SQL pour améliorer le plugins, mais je crois pas avoir le tps :(

    • Dommage :/ Tant pis on fera de l’aléatoire, ça marchera déjà très très bien.
      Encore merci pour ce joli plugin !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom