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 connus.

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}

Il ne faut utiliser qu’une seule fois par boucle l’un 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;amp;mots[0]=1&amp;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
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 :

  1. [(#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); 

Footnotes

[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.

updated on 15 July 2019

Discussion

71 discussions

  • Merci pour ce plug que j’ai pris à la place de la recherche avancée. Cependant j’ai un inconvénient :
    -  affichage des articles que si les 2 mots des groupes sont sélectionnés dès le départ.
    -  pas d’affichage des articles avec 1 seul mot de sélectionné
    -  pas de possibilité de rajouter un mot quand un seul a été sélectionné.

    #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},#SELF})]
    </div>
     
     
    <B_recherche_par>
    <div class="menu articles">
    	<BOUCLE_recherche_par(ARTICLES){mots}{!par date}{pagination 5}>
    		<div class="clubs"><h3>#TITRE</h3> #TEXTE
     
    				<BOUCLE_lesmots2(MOTS) {id_groupe=1} {id_article}>
    				<span> >> <b>Activités</b> : #TITRE</span>
    				</BOUCLE_lesmots2></div>
    	</BOUCLE_recherche_par>
     
    <p id="pagination" class="clearfix pagination nettoyeur">
    	#PAGINATION
    </p><!-- #pagination -->
    </div>
    </B_recherche_par>

    Je bloque un peu et vous remercie pour votre aide. :)

    Reply to this message

  • 4

    Bonsoir!

    J’utilise ce plugin génial depuis un bon moment! Il est au coeur de la navigation de mon site. Seulement voilà, je viens de m’apercevoir qu’il y avait un problème sous IE8.

    J’avais jusqu’alors testé mon site sous les dernières versions de Firefox, Chrome, Safari, Opéra ainsi que sous une version de IE9 sans aucun pb.

    Sous IE8, d’une part, en cliquant sur les boutons radio, l’ajax ne se met pas en route (il faut cliquer deux fois) et d’autre part, après l’ajout d’un mot dans le tableau, l’affichage de la page plante!

    Je vous mets un lien de l’une des pages utilisant le code!

    http://www.librairie-interactive.com/spip.php?page=mot&id_groupe=3

    Merci d’avance pour le temps que vous accorderez à mon pb!

    • Personne n’a ie8 pour voir le pb et surtout une idée pour me donner un piste de recherche ?

    • Pour ceux que ça pourraît aider, j’ai résolu le premier problème qui était lié à l’interprétation du “onchange” par ie7 et 8.

      http://webbugtrack.blogspot.fr/2007/11/bug-193-onchange-does-not-fire-properly.html

      Le problème se resoud facilement en remplaçant le onchange par onclick!

      Par contre, je n’ai pas encore résolu le problème de destructuration de la page au moment de choisir le mot. Il semble que l’ensemble du code n’est pas chargé (problème d’ajax?)

      Je suis toujours preuneur d’un coup de pouce!

    • merci,

      je ne peux aider, n’étant pas à l’origine de cette fonctionalité.

    • Bon! Pour le problème d’affichage, c’était bien de ma faute! Après un moment de recherche, une simple balise h4 fermante sans le slash... Seul IE 7 et 8 l’interprétaient!

      Merci à ceux qui ont regardé!

      mike

    Reply to this message

  • 8

    Bonjour j’utilise ce plugin qui est hyper intéressante, je n’ai jamais eu de problème sauf maintenant. J’ai un champ avec les mots clé du groupe 3 et un autre champ qui sélectionne une date avec “datepicker” , voici ma boucle resultat

    <BOUCLE_agenda(ARTICLES) {recherche?} {!par #ENV{tri,points}} {mots?} {!par date} {pagination 5} {id_rubrique IN 1}>
     <li>
     <a href="#URL_ARTICLE" title="[(#ETABLISSEMENT|textebrut)]">[(#LOGO_ARTICLE|image_reduire{190,0}|image_recadre{75,90,center})]
              </a>
         </li>                
    </BOUCLE_art>

    Si je choisit une date j’ai pas le bon resultat. Chaque article a un évènement dont les date sont géré par le plugin agenda. Merci de votre réponse

    • qu’entendez vous par “je n’ai pas le bon résultat” ? quel résultat avez vous vous et à quel résultat souhaitez vous aller ?

    • Merci pour votre réponse, si je choisis une date j’aimerai afficher les articles qui ont un événement à cette date. Alors j’aimerai savoir qu’est ce qu’il faut ajouter dans ma boucle de resultat pour que cela marche.

      PS: j’ai utilisé le plugin agenda pour creer les évènements dans les articles, alors les dates sont géré par ce plugin. Merci pour votre réponse

    • Hum,

      ce n’est pas un problème spécifique au critère mot, mais plutôt au plugin agenda ;-)

      Je suis un peu fatigué ce soir, donc je préfére ne pas écrire de bêtises, parceque c’est un code un chouilla complexe (il faut d’abord séléctionner les evenements à une date donnée, puis les articles liés à ces agendas).

      Pourquoi ne posez vous pas la question sur la liste de discussion de SPIP ? Sinon j’essaierai de trouver le code correct ce week-end (ce n’est pas compliqué, mais il faut faire les choses posément).

    • Merci beaucoup, j’ai posé la question sur la liste de discussion mais j’ai pas encore de réponse. Vous aurez une réponse avec la tête reposée. Merci encore

    • Bonjour Maïeul,
      Je compte sur vous pour le resultat de la recherche avec la datepicker, jusqu’à présent j’ai pas de réponse de la liste. Voici mon champ input de la date

      <input name="date1" id="datepicker" class="date-pick dp-applied" type="text" />

      les autres input sont des mots clés. Merci de votre aide

    • bon, déjà il faudrait que votre name soit égale à date_debut, car c’est le nom de du champ pour l’évenement.

      ensuite un code suivant devrais faire l’affaire, si j’ai bien compris le pb

      <BOUCLE_agenda(EVENEMENTS){jour_relatif_debut=0}>
       
      <BOUCLE_art(ARTICLES) {recherche?} {mots?}  {!par #ENV{tri,points}} {!par date} {pagination 5} {id_rubrique IN 1}{id_article}{doublons evenement}>
      <li>
      <a href="#URL_ARTICLE" title="[(#ETABLISSEMENT|textebrut)]">[(#LOGO_ARTICLE|image_reduire{190,0}|image_recadre{75,90,center})]
               </a>
          </li>                
      </BOUCLE_art>
      </BOUCLE_agenda>

      -  boucle evenements permet de selectionner les evenements du jour courant
      -  le id_article permet de selectionner l’article correspondant aux évenements, et le doublon évite de selectionner 2 fois l’article si celui ci a 2 evt le même jour

      Encore une fois, ce n’est pas un pb de critères mots, mais d’agenda : vous devriez demande plutôt sur le plugin agenda. Voyiez aussi http://www.spip.net/fr_article1971.html

    • Bonjour Maïeul, mille merci pour ton aide, J’ai testé la solution que vous m’avez proposé sans succès. Mais je reviens encore vers vous. J’ai changé de méthode, maintenant les mots clés sont attachés directement aux évènements et non pas aux articles (je penses que serait plus simple avec ce plugin). Alors j’avance bien, je rencontre un seule problème
      1/ quand je choisis une date, résultat OK (affiche les événements qui ont la date choisi)
      2/ quand je choisis une date et un mot clé , résultat OK (affiche les événements lié à la date choisis)
      3/ quand je choisis mot clé, PROBLEME (rien ne s’affiche, alors que ya bien des événement qui sont attaché a ce mot)

      Voici ma formulaire:

      <form action="spip.php?page=resultat" method="get" >
      <input name='page' value='resultat' type='hidden' />           
            <input name="date_debut" id="datepicker" class="date-pick dp-applied" type="text" />
            
              <select name="mots[0]">
              <option value="0" selected="selected">Choisir une cat&eacute;gorie</option>                
              <optgroup label="Culture">
                      <BOUCLE_g1(GROUPES_MOTS){id_groupe IN 2}>
              <BOUCLE_surmot(MOTS){id_groupe}{par titre}>
              <BOUCLE_articledesmotscles(ARTICLES){id_mot}>
                      </BOUCLE_articledesmotscles>
                      <option value="#ID_MOT" [(#ENV{id_mot}|=={#ID_MOT}?{"SELECTED"})]>#TITRE </option>
              </BOUCLE_surmot>
                      </BOUCLE_g1>
                      </optgroup>
      </select>
      <input name="submit" type="submit" class="search" title="Rechercher dans l'agenda" value="Rechercher" />
      </form>

      Voici ma boucle resultat:

      <div id="resulta">
      Recuperation date choisie: [(#ENV{date_debut}|affdate)]
      Recuperation  mot choisis?
      
      [(#SET{annee,#ENV{date_debut}|affdate{annee}})]
      [(#SET{mois,#ENV{date_debut}|affdate{mois}})]
      [(#SET{jour,#ENV{date_debut}|affdate{jour}})]
      
      <B_agenda>
      <ul>
      <BOUCLE_agenda(EVENEMENTS){mots?} {recherche?} {!par #ENV{tri,points}} {agendafull date_debut, date_fin, jour, #GET{annee}, #GET{mois}, #GET{jour}?} {pagination 5}>
      <BOUCLE_art(ARTICLES) {id_rubrique IN 1}{id_article}>
       <li>
       <a href="#URL_ARTICLE" title="[(#ETAB|sinon{#LIEU2}|textebrut|couper{30})]">[(#LOGO_ARTICLE|image_passe_partout{75,90}|image_recadre{75,90,center})]
            <span class="titre entry-title">#TITRE</span>      
        [<span class="date">(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE=non})</span>]
              [<span class="descriptif entry-content">(#CHAPO|TEXTEBRUT|COUPER{150})</span>]
              <hr />
              </a>
           </li>                            
      </BOUCLE_art>
      </BOUCLE_agenda>
      </ul>
      </B_agenda>
      </div>

      Pour finir comment récupérer dans la page résultat le titre du mot clé choisi??

    • pas compris : vous voulez faire une recherche sur un mot clef ou sur plusieurs en même temps ? car si un seul mot clef, pas besoin du plugins. Sur plusieurs, je n’ai jamais testé avec evenements.

      Pour afficher le titre du mot clef, utilisez une boucle mot classique de SPIP

    Reply to this message

  • Bonjour Maïeul,
    Je compte sur vous pour le resultat de la recherche avec la datepicker, jusqu’à présent j’ai pas de réponse de la liste. Voici mon champ input de la date

    <input name="date1" id="datepicker" class="date-pick dp-applied" type="text" />

    les autres input sont des mots clés. Merci de votre aide

    Reply to this message

  • 3

    J’essaie de faire fonctionner ce plugin mais je n’arrive à avoir les bons résultats, qui ne correspondant pas du tout.

    <BOUCLE_article(ARTICLES) {id_article}>
    ...
    #SET{mots,#ARRAY}
    <BOUCLE_mot_travaux(MOTS){id_article}{par titre}{id_groupe==5}>
    #SET{mots,#GET{mots}|push{#id_mot}}
    <a href = "#URL_MOT">#TITRE</a></BOUCLE_mot_travaux> 
    ...
    <BOUCLE_article_lies(ARTICLES){mots 100% #GET{mots}}{par date}{inverse}>#TITRE</BOUCLE_article_lies>
    ...
    </BOUCLE_article>

    Mon article de test a 11 mots-clefs, j’attends donc que ma deuxième boucle articles ne sélectionne que les articles liés qui on 100% de ces 11 motfs-clefs

    Mais j’ai pourtant une longue liste d’article qui ne correspond pas du tout à ce critère.

    Une erreur dans ma boucle, une mauvaise compréhension du critère ?

    • mettre #ID_MOT en majuscule dans le push devrait résoudre l’affaire ?

    • Non, ça ne change rien ...

      En fait, le plugin (version 1.2.3) installé via http://files.spip.org/spip-zone/archives.xml ne fonctionne pas en spip3 comme indiqué.

      Il produisait des erreurs: Erreur 1146 de mysql: Table ’etraces_spip3.spip_mots_articles’ doesn’t exist

      RastaPopoulos a réglé ça http://zone.spip.org/trac/spip-zone/changeset/59904

      La version 1.3 fonctionne mais demande vraiment trop de ressources pour être utilisable.

      100% de cpu utilisé, Query_time: 608.329400

    • hum, malheureusement je n’ai pas assez de compétence mysql pour régler ce pb. C’était fil qui avait fait le code initiale, je m’étais contenté de l’adapter à la syntaxe.

    Reply to this message

  • LENTEUR

    Bonjour,

    j’utilise le formulaire “n’affichant que certains groupes de mots” , il s’agit d’un groupe de mot contenant une centaine de mots clés.

    lorsque je sélectionne un mot clé dans le menu déroulant j’ai un appercu du nombre d’articles qui répondent à ce critère, le temps d’affichage de ces articles est tes long, anormalement long, 15/20 secondes,

    avez vous une astuce pour améliorer cette efficacité ?

    merci

    Reply to this message

  • 6

    Bonjour à tous,

    J’arrive à filtrer en fonction d’un mot clef quand je le mets en dur dans le squelette.
    Mais comment faire si je veux qu’il soit en variable sans qu’il passe par l’URL?

    je m’explique, c’est tout simple mais je n’ai pas trouvé comment faire :

    je suis sur un article qui a pour mot clef “aaa” comment faire une boucle qui me donne tous les articles ayant le même mot clef?

    mon code pour le moment avec le mot en dur :

    <BOUCLE_mot (MOTS) {id_article}>
                                        #SET{mots, #ARRAY{0,aaa}}
                                        <BOUCLE_article_mot (ARTICLES){id_rubrique!=11}{mots 100% #GET{mots}}>
                                            <a href="[(#URL_RUBRIQUE|parametre_url{art,#ID_ARTICLE})]">#TITRE, </a>
                                        </BOUCLE_article_mot>
                                    </BOUCLE_mot>

    merci !

    • Il faut que vous remplissiez dynamiquement le tableau mots.

      Pour ce faire

      #SET{mots,#ARRAY}
      <BOUCLE_mots>
      #SET{mots,#GET{mots}|push{id_mot}}
      </BOUCLE_mots>

      Par ailleurs il faut que vous sortiez la boucle articles_mots de la boucle mot, sinonvous elle sera affichée autant de fois qu’il y a de mois à l’article.

    • Merci pour cette réponse rapide !

      J’ai essayé ça, mais je ne dois pas avoir tout compris...

            	#SET{mots,#ARRAY}
       
                                     <BOUCLE_mot (MOTS) {id_article}>
                                          #SET{mots,#GET{mots}|push{id_mot}}
                                      </BOUCLE_mot>
       
                                      <BOUCLE_article_mot (ARTICLES){id_rubrique!=11}{mots 100% #GET{mots}}>
                                      	<a href="[(#URL_RUBRIQUE|parametre_url{art,#ID_ARTICLE})]">#TITRE, </a>
                                      </BOUCLE_article_mot>

      j’ai l’impression que de cette manière il ne comprend pas à quel mot l’array doit faire référence, je me trompe?

      Merci beaucoup du temps que vous m’accordez en tout cas

    • J’ai finalement réussi mais en laissant la boucle article dans la boucle mot
      Je n’ai pas de problème de répétitions, même quand j’ai plusieurs mots clefs associés. Bizarre mais ça fonctionne

      Le code pour ceux que ça intéresserait :

           #SET{mots,#ARRAY}                   
                                     <BOUCLE_mot (MOTS) {id_article}>
                                          #SET{mots,#GET{mots}|push{id_mot}}
                                          <BOUCLE_article_mot (ARTICLES){id_rubrique!=11}{id_mot}{exclus}>
                                          <a href="[(#URL_RUBRIQUE|parametre_url{art,#ID_ARTICLE})]">#TITRE, </a>
                                      </BOUCLE_article_mot>
                                      </BOUCLE_mot>

      Merci pour ce plugin et pour ton aide précieuse

    • votre seconde solution effectivement fonctionne … mais n’utilise pas ce plugin (pas de critères mots)

      il utilise juste les possibilités standard de SPIP. Et le pb de répétition absent est normal, grâce au critère exclus.

      par contre je ne comprend pas que le premier exemple n’ai pas fonctionné : est)ce que par hasard vous auriez #SETmots,#ARRAY dans la partie optionnelle d’une boucle ?

    • Ah ok... !

      Non, je n’ai jamais utilisé #SET ou #ARRAY ailleurs que pour cette boucle dans les conditions énoncées plus haut. Mais mon niveau de développement est tellement proche de 0 qu’il est possible qu’une erreur quelque part ailleurs empêche votre solution de fonctionner !

      Merci

    • Eerik Wissenz

      J’avais la meme besoins: juste afficher les articles qui on tout (et que tout) les mots clef du context (genre les mots clef d’un rubriques ou un articles), puis ordre tout ca par date inverse.

      Maïeul propose biens la bonned solution, merci, mais a oublier un “#” avant id_mots “push”, et “id_mot” devrais etre “ID_MOT”.

      #SET{mots,#ARRAY}                                
                                     <BOUCLE_mot (MOTS) {id_article}>
                                          #SET{mots,#GET{mots}|push{#ID_MOT}}
                                      </BOUCLE_mot>
                                      
                                      <BOUCLE_article_mot (ARTICLES){mots 100% #GET{mots}}{par date}{inverse}>
                                              <a href="#URL_ARTICLE">#TITRE, </a>
      </BOUCLE_article_mot>

      Remarque, dans un context rubriques, just change “id_article” avec “id_rubrique” dans la premier boucle. Aussi, oublie pas de cocher dans la mot clefs groupe que tu peur associer ce les mots clef de ce group a des rubrique (c’est possible que pour des article par default, Spip 2.1.12).

      Pardon mon francais, je suis Anglophone mais je me debroille en francais assez pour bien Spiper. Vive Spip!

    Reply to this message

  • 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

    Reply to this message

  • Je n’aurais que 2 mots : “BRAVO” et “MERCI” ! :-)

    Reply to this 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!

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom