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

  • 1

    Bonjour
    j’ai un pb sur ff
    quand je clique sur un mot clé j’ai un « noajax » qui apparait...
    sur ie ça passe nickel !!

    quelqu’un pourrait il m’aider ?

    merci pour vos réponse

    • faut enlever « refuser_traiter_formulaire_ajax() ; » dans la fonction function « formulaires_recherche_par_mots_traiter_dist($filtre_groupes = null, $url_resultat = null) »
      du dossier « recherche_par_mots.php »

    Répondre à ce message

  • 1
    patrice47310

    Bonjour,
    Merci pour votre réponse.
    En fait je dois essayer d’adapter ce plugin à notre besoin.
    Nous devons mettre en place une recherche guidée multicritère
    PUBLIC et TYPE-DOCUMENT et THEMATIQUE
    le probléme c’est que THEMATIQUE à environ 230 entrées hiérachisées et nous pensons que cela ne sera pas pratique si l’utilisateur choisi THEMATIQUE (trop long).
    Donc j’ai d’abord dissocié les thématique pour faire un pré-filtre en créant deux groupes de mots cles THEMATIQUES et SOUS-THEMATIQUES
    Malheureusement, à l’indexation un l’article peut associé à plusieurs thematiques et sous thematiques (exemple : j’indexe un article aux thématiques DROIT et HISTOIRE puis aux sous-thematiques DROIT PENAL et HISTOIRE DE LA JUSTICE .
    A la recherche si je sélectionne la thematique DROIT puis le groupe sous-thematique alors je retrouve DROIT PENAL et HISTOIRE DE LA JUSTICE.
    je souhaiterai avoir uniquement les sous thematique liées au DROIT.
    C’est pour cette raison que j’ai supprimé le groupe sous-thematique et j’ai crée des groupes ayant le même nom que les mots clé du groupe themathiqueTHEMATIQUE.
    Je souhaiterai que lorsque je sélectionne un mot du groupe thématique exemple « histoire »,
    qu’il apparaisse dans la deuxième liste déroulante le contenu du groupe « histoire ».
    cela permettrai de liér les groupes avec une hiérachisation
    j’espère avoir été plus clair ?
    Je vais essayer de voir si je peux faire quelque chose avec ce que vous m’avez donnée.
    Si quelqu’un a des idées je suis preneur !
    Merci

    • heu .... je crois avoir compris.

      Bon, ce que je vous ait proposé devrait le faire (a vous d’entourer cela des bonnes balises html)

      par contre pour que les changements se fasse dynamiquent (ID : sans avoir à valider lors de la selection du groupe) il faut faire du js je pense ... et ca je suis pas très doué.

    Répondre à ce message

  • 1
    patrice47310

    Bonjour,

    Je dois mettre en place une recherche guidé, j’ai installé le plugins et je le trouve génial.
    Avec ce plugins nous ne pouvons pas faire de recherche infructueuse.
    Néanmoins, nous avons des groupes de mots clé hiérarchisés.
    Donc pour la faire, j’ai créé un groupe thématique avec les mots suivants :
    droit
    histoire
    management
    puis j’ai créé les groupes droit, histoire, management.
    Je souhaiterai que lorsque je sélectionne un mot du groupe thématique exemple « histoire »,
    qu’il apparaisse dans la deuxième liste déroulante le contenu du groupe « histoire ».
    cela permettrai de liér les groupes avec une hiérachisation
    Avez vous des idées ?

    • Hum, cela n’a pas grand chose a voir avec le plugin. Nez en moins

      Je crois qu’il y a une contribution de « mot clef hierarchique » qui permettrai de faire cela plus simplement (en évitant par exemple d’avoir des mots pas orthographiés tt à fait de la même manière que le groupe correspondant).

      Sinon une boucle

      <BOUCLE_mots(MOTS)>
      <BOUCLE_groupe_n2(GROUPES_MOTS){titre=#TITRE}>
      #TITRE
      </BOUCLE_groupe_n2>
      </BOUCLE_groupe_n1>

      et si vous voulez faire cela de manière recursive

      <BOUCLE_mots(MOTS){id_groupe ?}>
      <BOUCLE_groupe_n2(GROUPES_MOTS){titre=#TITRE}>
      #TITRE
      <BOUCLE_rec(Boucle_mots) />
      </BOUCLE_groupe_n2>
      </BOUCLE_groupe_n1>

    Répondre à ce message

  • 2

    Bonjour,

    Merci pour ce plugin bien pratique. J’ai cependant un petit souci : quand je fais cette boucle :

    <BOUCLE_articles(ARTICLES) {id_rubrique=1} {pagination 50} {mots?}>

    La pagination ne donne pas les bons résultats dans le cas ou le critère « mots » est vide

    Dans cette rubrique, il y a 149 articles. le #TOTAL_BOUCLES m’en donne 50 et la pagination est 0 | 50 | 100

    Une idée ?

    Merci ++

    • il faut distinguer :
      -  #TOTAL_BOUCLE qui donnent le nombre d’élement retourné par la boucle en fonction de la pagination (ici 50)
      -  #GRAND_TOTAL qui lui donne le nombre sans tenir compte du résultat (ic 149)

      voir la doc sur la pagination sur spip.net

    • Merci ! On en découvre tous les jours avec Spip ;)

    Répondre à ce message

  • 1

    Bonjour,

    Il y a une erreur dans le squelette parmots.html du plugin Critère mots. Il faudrait écrire <INCLURE{fond=contenu/page-parmots}{env}> et non pas <INCLURE{fond=contenu/page-mots}{env}>.

    Merci pour ce plugin.

    Répondre à ce message

  • 3

    Bonjour,

    je viens vers vous suite à un problème avec le plugin..
    j’ai une erreur après l’envoi du formulaire (j’utilise un SPIP 2.0.10, mais pas le formulaire du zip)
    Mon formulaire reprend les mots clé de chaque groupe, en affichant « Tous » en premier puis les autres mots en ordre alphabétique.

    Voici l’erreur :

    <BOUCLE_articles1>()
    Erreur SQL
    articles.id_article, articles.titre, articles.lang FROM spip_articles AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXJ0aWNsZXM8L2NvZGU+"></span> WHERE (articles.statut = 'publie') AND (articles.date < '9999-12-31') AND articles.id_article IN ( SELECT id_article FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcGNvbnQ8L2NvZGU+"></span>.spip_mots_articles WHERE id_mot=13 OR id_mot=14 OR id_mot=27 OR id_mot=26 GROUP BY id_article HAVING SUM(1) >= 4 )
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id_article FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGNtczwvY29kZT4="></span>.spip_mots_articles WHERE id_mot=1

    Et mon formulaire est le suivant :

       <form action="spip.php?page=recherche2" method="get">
        <div>
        <input type="hidden" value="recherche2" name="page" />
    	[<input type="hidden" name="lang" value="(#ENV{lang})" />]
    	<table>
      <tr><td><:info_rechercher_02:></td>
      <td><input type="text" class="text" size="10" name="recherche" id="recherche"[ value="(#ENV{recherche})"] accesskey="4" /></td></tr>
    	
      <B_lang>
      <tr><td>
      	Langue
      </td><td>
      	<select name="mots[0]" id="mots-0">
      	  <option value="13" selected='selected'>Toutes</option>
      		  <BOUCLE_lang(MOTS){id_groupe=3}{id_mot!=13}{par titre}>
      		    <option value="#ID_MOT" [(#ID_MOT|=={13}?{"selected='selected'"})]>#TITRE</option>
      	   </BOUCLE_lang>
      	</select>
      </td></tr>
      </B_lang>
      
      
      <!-- Niveau -->
      <B_surmot>
      <tr><td>
        Niveau
      </td><td>
      	<select name="mots[1]" id="mots-1">
      	  <option value="14" selected='selected'>Tous</option>
        <BOUCLE_surmot(MOTS){id_groupe=1}{id_mot!=14}{par titre}>
      		<option value="#ID_MOT" [(#ID_MOT|=={14}?{"selected='selected'"})]>#TITRE</option>
      	</BOUCLE_surmot>
      </select>
      </td></tr>
      </B_surmot>
      
        <!-- Ressource -->
      <B_ressource>
      <tr><td>
        Ressource
      </td><td>
      	<select name="mots[2]" id="mots-2">
      	  <option value="28" selected='selected'>Toutes</option>
        <BOUCLE_ressource(MOTS){id_groupe=4}{id_mot!=28}{par titre}>
      		<option value="#ID_MOT" [(#ID_MOT|=={28}?{"selected='selected'"})]>#TITRE</option>
      	</BOUCLE_ressource>
      </select>
      </td></tr>
      </B_ressource>
      
      <!-- Theme -->
      <B_theme>
      <tr><td>
        Theme
      </td><td>
      	<select name="mots[2]" id="mots-2">
      		<option value="27" selected='selected'>Tous</option>
      	<BOUCLE_theme(MOTS){id_groupe=5}{id_mot!=27}{par titre}>
      		<option value="#ID_MOT" [(#ID_MOT|=={27}?{"selected='selected'"})]>#TITRE</option>
      	</BOUCLE_theme>
      </select>
      </td></tr>
      </B_theme>
    
      <B_typecomp>
      <tr><td>
       Type de compétence
      </td><td>
      	<select name="mots[3]" id="mots-3">
      		<option value="26" selected='selected'>Tous</option>
      	<BOUCLE_typecomp(MOTS){id_groupe=2}{id_mot!=26}{par titre}>
      		<option value="#ID_MOT" [(#ID_MOT|=={26}?{"selected='selected'"})]>#TITRE</option>
      	</BOUCLE_typecomp>
      </select>
      </td></tr>
      </B_typecomp>
      </table>
    
      <input type="submit" class="submit" value="&gt;&gt;" title="<:info_rechercher:>" />
    	
    </div></form>
    	

    et sur ma page de résultat de la recherche je n’ai que ca impliquant le critère mots :

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

    Auriez-vous une idée ?

    • quel version de mysql utilisez vous (aller dans /ecrire/ ?exec=info pour savoir). On a déja eu des erreurs de ce type sur des version 4 de Mysql. Le plugin nécéssite des versions 5.

      si ce n’est pas ça, confirmez, on ira chercher l’erreur plus loins.

    • mysql
      MySQL Support	enabled
      Active Persistent Links 	0
      Active Links 	1
      Client API version 	4.0.25
      MYSQL_MODULE_TYPE 	none
      MYSQL_SOCKET 	/tmp/mysql.sock
      MYSQL_INCLUDE 	no value
      MYSQL_LIBS 	no value

      Effectivement ça doit etre ça...
      une mise à jour devrait faire l’affaire ?

      merci d’avance ;)

    • Après un test, effectivement, ca marche !

      Merci !

    Répondre à ce message

  • 7

    ça à l’air super, je vais tester cela. Savez vous si il est possible de créer des « dépendances » ?
    Par ex ai un groupe de mots clés pays (avec tous les pays en mot clé) et un groupe « villes » (avec les villes en mot clé). L’idéal serait que lorquon sélectionne « France » une deuxième liste déroulante se recharge pour afficher les villes de France. Faisable ? Merci

    • sans doute ... mais bon j’ai pas toute les compétences. Par contre, cherche je crois qu’il y a plugin « geographie » qui liste l’ensemble des villes / pays etc.

      je sais pas s’il est documenté par contre ...

    • Non, en l’état, tu peux faire un groupe France avec des villes et un groupe Allemagne avec d’autres villes.

    • Ok merci ! Dernière question vu que ne lai pas encore testé à fond. Si jai une liste d’articles, puis je utiliser ce plugin pour les trier selon 2 groupes de mots clés par ex ? AInsi jarrive sur la rubrique, je vois tous les articles, mais les sélecteurs en haut me remplaceraient ma liste par celle « filtré » par les mots clés. Si cest possible cest trop bien. Si cest le cas auriez vous un bout de code sur lequel morienter ? Merci infiniment !!

    • C’est le but justement de ce plugin !

      En ce qui concerne le code, si vous connaissez le système de boucle de spip, la doc devrait faire l’affaire non ?

      vous pouvez tester par exemple avec le formulaire intégré par RealET. Sinon vous avez d’autre exemple dans le plugin « collezion ».

    • ok merci, je vais regarder tout ça !

    • hello, dans les exemples la recherche se fait sur une liste darticles non affichés qui s’affichent selon les mots clés et ne trouve pas comment faire pour que le tri se fasse sur la liste d articles qui est présentée. Il faudrait que la page se recharge et ne montre que les articles liés aux mot/mots clés choisis. Une piste ?

    • mettre tes balise dans un include que tu appel en ajax.

      (voir la doc de spip pour l’ajax)
      et mettre un ? dans le critère mots pour tout afficher au départ.

    Répondre à ce message

  • 5

    (premièrement, je m’excuse pour mon français terrible, c’est ma troisième langue ; en plus, j’ai pas beaucoup d’expérience avec SPIP, alors, aye pitié, s’il vous plait... :-) )

    J’ai essayé d’utiliser ce plugin, mais je n’ai pas réussi...

    Ce que je veux faire est très simple, je pense : je veux donner la possibilité à l’utilisateur de ma formulaire de choisir s’il/elle veut utiliser tous les mots-clés (« AND ») ou au moins un des ceux qu’il/elle a choisis (« OR »). J’ai ajouté une variable « GET » à l’URL (« &id_mot_type=1 » vs. « &id_mot_type=100%25 »), et j’essaye de l’utiliser avec :

    <BOUCLE1(ARTICLES){...}{mots? #ENV{id_mot_type, 1}}{...}

    Ça ne fonctionne pas, même si

    <BOUCLE1(ARTICLES){...}{mots? 1}{...}
    <BOUCLE1(ARTICLES){...}{mots? 100%}{...}

    font ce que je veux, et utiliser #ENV{id_mot_type} ailleurs dans le squelette fonctionne bien.

    J’ai ajouté une petite chose de « logging » dans inc_prepare_mots_dist, et il semble que « score » est toujours vide. Je suis bien sûr que j’ai fait quelque bêtise, mais je ne le vois pas... J’apprécierais toute l’aide que vous pourrez me donner... :-)

    • Bonjour,

      attention :
      -  id_mot_type doit être un tableau : mettez id_mot_type[0]=1&id_mot_type[1]=x dans votre url (d’ailleur je n’ai pas compris votre « &id_mot_type=1 » vs. « &id_mot_type=100%25 »
      -  je ne suis pas sûr que le ? soit pertinent, mais là il faudrait que je révise ma syntaxe spip
      -  vous voulez au moins 1 mot ? : une syntaxe du type (ARTICLES){mots 1 #ENV{id_mot_type}} devrai faire l’affaire

    • Bonjour,

      Je pense que je n’ai pas exprimé mes intentions très clairement... Je vais essayer encore !

      Dans le même squelette, je veux avoir la possibilité de specifier que :

      1. des résultats dans la boucle ont au moins 1 des mots-clés, ou
      2. des résultats dans la boucle ont tout les mots-clés specifiés.

      Si j’ai bien compris, cela est possible avec le « score » paramètre : on peut mettre « 1 » pour exiger que des résultats ont au moins 1 des mots-clés, et « 100% » pour exiger qu’ils ont tout les mots-clés. Est-ce que c’est correcte ?

      En plus, je veux que, si l’utilisateur n’a pas specifié aucun mot-clé, que ce critère fait rien du tout. Si j’ai bien compris, cela devoir être possible avec le «  ? » (alors {mots?} au lieu de {mots})

      Alors, au lieu d’avoir un score fixé dans le squelette, je veux utiliser une paramètre specifié par l’utilisateur (en réalité sur le formulaire, c’est un bouton radio, mais ce n’est pas important) pour le score. Je pense que votre suggestion d’utiliser un tableau est pour le cas ou je veux utiliser un autre tableau des mots-clés, mais c’est pas ça que je veux faire. Peut-être le nom de la paramètre que j’ai utilisé n’est pas très clair... Je veux quelque chose comme :

      {mots? #ENV{mots_score}}
    • merci, c’est plus clair !

      je viens de faire des test : je pense que le problème est l’endroit où vous placiez le ?

      {mots ?#ENV{mots_score}

      devrait faire l’affaire
      pouvez vous tester et conformer ?

    • et bien non, j’ai dit une betise... je pense en fait que le ? n’est possible que pour des critères lié a des élement de bdd. du genre tester la valeur d’une table.

      Une laternative pour vous : installer spip-bonux. Et faire une boucle condition qui test la présence de #ENVmots. Si #ENVmots est présent, faire la boucle. Sinon faire une autre boucle

    • En fait, placer le ? juste à coté de l’#ENV fonctionne ! Je ne comprend pas pourquoi, mais, merci beaucoup ! :-)

    Répondre à ce message

  • 7

    Bonjour

    Je viens d’installé en local, pour me faire la main, le squelette collection et j’ai installé tous les plugins recommandés .

    Pourtant, j’ai un défaut que je ne sais pas corriger . Ca m’indique

    Deprecated  : Call-time pass-by-reference has been deprecated in C :\wamp\www\spip-collection\plugins\critere_mots\critere_mots_fonctions.php on line 47

    Deprecated : Call-time pass-by-reference has been deprecated in C :\wamp\www\spip-collection\plugins\critere_mots\critere_mots_fonctions.php on line 50

    comme erreur.

    J’ai donc cherché ces lignes et elles indiquent ça :

    pour la ligne 47 :

    critere_mots_dist($idb, &$boucles, $crit,’id’) ;

    et pour la ligne 50 :

    critere_mots_dist($idb, &$boucles, $crit,’titre’) ;

    Qu’est-ce qui cloche ?

    Merci pour l’éventuelle réponse

    • heu, ma version PHP = 5.3.0

    • Bonjour, désolé de ce message tardif.

      Comme le dit le code, c’est un problème de syntaxe dépassé. Mais malheureusement je n’ai pas le moyen pour le moment de corriger cela. Pour contourner le problème, vous pouvez mettre dans votre php.ini

      allow_call_time_pass_reference = on

      ceci dit c’est le masqué, non le résoudre

    • numismeuros

      personne ne peut me répondre ?

    • numismeuros

      mettre dans votre php.ini

      heu...c’est quoi ça ?

    • numismeuros

      voilà ce que j’ai dans php.ini :

       ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
       ; Quick Reference ;
       ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
       ; The following are all the settings which are different in either the production
       ; or development versions of the INIs with respect to PHP’s default behavior.
       ; Please see the actual settings later in the document for more details as to why
       ; we recommend these changes in PHP’s behavior.

       ; allow_call_time_pass_reference
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; display_errors
       ; Default Value : On
       ; Development Value : On
       ; Production Value : Off

       ; display_startup_errors
       ; Default Value : Off
       ; Development Value : On
       ; Production Value : Off

       ; error_reporting
       ; Default Value : E_ALL & E_NOTICE
       ; Development Value : E_ALL | E_STRICT
       ; Production Value : E_ALL & E_DEPRECATED

       ; html_errors
       ; Default Value : On
       ; Development Value : On
       ; Production value : Off

       ; log_errors
       ; Default Value : Off
       ; Development Value : On
       ; Production Value : On

       ; magic_quotes_gpc
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; max_input_time
       ; Default Value : -1 (Unlimited)
       ; Development Value : 60 (60 seconds)
       ; Production Value : 60 (60 seconds)

       ; output_buffering
       ; Default Value : Off
       ; Development Value : 4096
       ; Production Value : 4096

       ; register_argc_argv
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; register_long_arrays
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; request_order
       ; Default Value : None
       ; Development Value : « GP »
       ; Production Value : « GP »

       ; session.bug_compat_42
       ; Default Value : On
       ; Development Value : On
       ; Production Value : Off

       ; session.bug_compat_warn
       ; Default Value : On
       ; Development Value : On
       ; Production Value : Off

       ; session.gc_divisor
       ; Default Value : 100
       ; Development Value : 1000
       ; Production Value : 1000

       ; session.hash_bits_per_character
       ; Default Value : 4
       ; Development Value : 5
       ; Production Value : 5

       ; short_open_tag
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; track_errors
       ; Default Value : Off
       ; Development Value : On
       ; Production Value : Off

       ; url_rewriter.tags
       ; Default Value : « a=href,area=href,frame=src,form=,fieldset= »
       ; Development Value : « a=href,area=href,frame=src,input=src,form=fakeentry »
       ; Production Value : « a=href,area=href,frame=src,input=src,form=fakeentry »

       ; variables_order
       ; Default Value : « EGPCS »
       ; Development Value : « GPCS »
       ; Production Value : « GPCS »

      donc apparement c’est déjà sur « ON »

    • non, vu qu’il y a le ; devant, qui signifie commentaire

    • numismeuros

      Voilà comment j’ai rectifié, mais ça me mets toujours le message bien que j’ai vidé le « cache ».

       ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
       ; Quick Reference ;
       ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
       ; The following are all the settings which are different in either the production
       ; or development versions of the INIs with respect to PHP’s default behavior.
       ; Please see the actual settings later in the document for more details as to why
       ; we recommend these changes in PHP’s behavior.

      allow_call_time_pass_reference
       ; Default Value : On
       ; Development Value : Off
       ; Production Value : Off

       ; display_errors
       ; Default Value : On
       ; Development Value : On
       ; Production Value : Off

       ; display_startup_errors
       ; Default Value : Off
       ; Development Value : On
       ; Production Value : Off

      Bon c’est pas grave si ça ne fait ça qu’en local. Je vais tester en ligne et on verra ce que ça donne .
      Merci tout de même

    Répondre à ce message

  • 5
    Guillaume

    Bonjour,
    je cherche à intégrer ce plugin à Zpip. Est-ce que quelqu’un pourrait m’expliquer la marche à suivre ?
    merci
    Guillaume (un débutant)

    • que cherchez vous à obtenir sur ZPIP ? connaissez vous un peu le langage SPIP ou pas ?

    • Bonjour,
      en fait, j’ai associé des mots clés à des articles : un pour le lieu géographique de l’article et un pour la date. Et j’aimerai associer les deux. Le but serait d’afficher sur une page les articles qui correspondent à ces deux critères. Par exemple : Alsace et avril 2010. Le tout me permettrait de simplifier la navigation sur le site où il y a beaucoup d’articles.
      je connais la base du langage spip mais je ne pense pas être en mesure de modifier tout seul ce squelette.
      merci à vous pour votre aide
      Guillaume

    • bonjour,

      je pense qu’avec les ajouts fait par Real3t il doit être assez simple de proposer une page zpip pour cela. malheureusement je n’ai pas le tps de regarder aujourd’hui. Je regarderai cela demain et vous tiens au courant.

    • en fait finalement j’ai eu le tps de regarder. Je viens de faire un commit. Attendons 14 h la nouvelle version. Installez là, puis aller sur votresite/ ?page=parmots

      vous devrez avoir le formulaire proposé par Real3T

      cordialement

    • un grand merci à vous, ça fonctionne.
      Bonne continuation
      Guillaume

    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