SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 163 visiteurs en ce moment

Accueil > Navigation > Tris conditionnels > Exclure selon un mot-clé

Exclure selon un mot-clé

16 mai 2004 – par Olivier GENDRIN – 34 commentaires

Toutes les versions de cet article : [English] [français]

7 votes

Cette boucle permet d’exclure de l’affichage une liste d’articles, de rubriques, de brèves ou de sites en fonction d’un mot-clé.

Cette boucle fait suite à celle proposé dans l’article 563 : Afficher selon un mot clé


<BOUCLE_exclure (ARTICLES) {titre_mot=exclu} {doublons}>
</BOUCLE_exclure>

<BOUCLE_afficher_non_exclus (ARTICLES) {tout} {doublons} >
<a href="#URL_ARTICLE">#TITRE</a>
</BOUCLE_afficher_non_exclus>

Remarques :

-  Toute l’astuce de cette boucle réside dans l’usage du critère doublons. En effet, la première boucle (BOUCLE_exclure) sélectionne parmis les ARTICLES ceux qui sont dotés du mot clé exclu (titre_mot=exclu).
La seconde boucle (BOUCLE_afficher_non_exclus) affiche tous (tout) les ARTICLES, à l’exception de ceux qui on déjà été sélectionnés par une boucle précédente dotée elle aussi d’un critère doublons.

-  On pourra remplacer ARTICLES par RUBRIQUES, BREVES ou SITES selon ce que l’on veut afficher.

Il faudra bien évidement adapter le contenu de href (#URL_RUBRIQUE, #URL_BREVE et #URL_SITE).

-  Ici, le mot clè est ’exclu’. On pourra le remplacer bien évidemment par n’importe quel autre mot clé. Attention toutes fois de s’assurer qu’on a pas deux mots clès avec le même ’titre’ dans deux groupes différents, c’est à dire deux mots clés au nom identique ; sauf bien évidemment si c’est un effet recherché.

Dernière modification de cette page le 7 décembre 2006

Retour en haut de la page

Vos commentaires

  • Le 13 décembre 2008 à 11:06, par Simbad En réponse à : Exclure selon un mot-clé

    Seul souci avec cette méthode : quand on a une grande quantité d’articles exclus (parce qu’on a tout simplement une grande quantité d’articles sur le site), spip génère une méga requête avec des NOT IN(1,2,3,4,...etc) sur des lignes et des lignes...

    Quel dommage que le {id_mot != toto} ne prenne en compte que les articles ayant effectivement un mot clé ! Une piste que j’essaierai lundi : {id_mot != toto ?}

    Répondre à ce message

  • Le 1er octobre 2008 à 12:00, par sloanapy En réponse à : Exclure selon un mot-clé

    Bonjour,

    en utilisant les conseils de cette contrib, voici un petit exemple concret :

    1 - des articles sont sélectionnées en haut de page selon des mots clés qui appartiennent à un groupe (10) de mots clé. Les mots clés peuvent être attribués à des articles de toutes les rubriques

    2 - sous ces articles sélectionnés, il faut afficher la liste de tous les articles qui n’appartiennent qu’à 2 rubriques précises sans répéter ceux qui pourraient avoir un des mot clé du groupe 10 et sont donc déjà affichés en haut de page.

    Spip 1.9.2e

    Voici le résultat

    <BOUCLE_exclure (ARTICLES) {id_groupe=10} {doublons}>
    </BOUCLE_exclure>                       

    <B_liste>
    <div class="liste-articles">
    [(#ANCRE_PAGINATION)]
    [(#ENV{debut_articles}|?{'',' '})]
            <BOUCLE_liste(ARTICLES) {id_rubrique=17;3}{par date}{inverse} {doublons} {pagination}>
            <h3 class="titre"><a href="#URL_ARTICLE">#TITRE</a></h3>
            [<font class="texteliste">(#SOUSTITRE)]<small>[ - (#DATE|affdate_jourcourt)]</small>[<br />(#CHAPO)]</font>
            </BOUCLE_liste>
    [<p class="pagination">(#PAGINATION)</p>]
    </div>
    </B_liste>

    La première boucle traite tous les articles qui ont un des mots clés du groupe 10.

    Je ne prends ensuite que les articles des rubriques 17 et 3 avec {id_rubrique=17;3} ce qui me permet d’exclure toutes les autres rubriques sans avoir à utiliser de mots clés.

    Répondre à ce message

  • Le 27 juin 2004 à 19:54, par Marcopol En réponse à : > Exclure selon un mot-clé

    Que se passe-t-il lorsque l’on ajoute à la suite de cet exemple, une 3e boucle article avec le critère doublons ?

    • Le 28 juin 2004 à 13:17, par Olivier GENDRIN En réponse à : > Exclure selon un mot-clé

      La trosième boucle sélectionnera tous les articles correspondant à ses critères, sauf ceux précédements sélectionnés par les autres boucles ’équipées’ du critère {doublons}.

      A notter qu’avec les boucles proposées en exemple, une troisième boucle ARTICLES ne donnera donc rien, puisque tous les articles sont sélectionnés par les deux premières. Il n’y en a donc aucun qui ait échappé à {doublons}.

    • Le 28 juin 2004 à 21:24, par ? En réponse à : > Exclure selon un mot-clé

      C’est bien ce que j’ai constaté et ça me gène ; en effet dans ma page d’accueil j’affiche les nouveaux articles en 2 tranches (détail pour les plus récents et résumé ensuite), c’est à dire en 2 boucles

      <BOUCLE_article_un(ARTICLES){par date} {inverse} {0,5}>
      ............
      </BOUCLE_article_un>

      <BOUCLE_articles_recents(ARTICLES)  {par date} {inverse} {5,15}>
      ............
      </BOUCLE_articles_recents>

      Or je désire éliminer les articles d’une certaine rubrique, tout en conservant cette logique de présentation. Comment faire ?

    • Le 29 juin 2004 à 00:13, par Olivier GENDRIN En réponse à : > Exclure selon un mot-clé

      OK.

      Tu veux exclure une rubrique. Donc tu lui associe le mot clé (par exemple) ’exclu’.

      Puis nous allons concevoir une boucle qui dientifiera toutes les rubriques attachées au mot-clé exclu :

      Vient ensuite la boucle d’exclusion, qui est insérée à la place des ... de la boucle rubriques_exclues :

      On notera que le critère {doublons} est appliqué à la boucle qui concerne les articles. Cela permet de laisser la possibilité d’afficher les rubriques associées à exclu. Et que la boucle exclure_articles_de_rubriques_exclues ne considére pas le mot-clé exclu, puisqu’il est ici utilisé avec la boucle RUBRIQUES.

      Ensuite, il est possible qu’il y ait des articles qui ne soient pas dans les rubriques exclues, mais dont tu ne veuille pas qu’ils soient affichés dans les nouveautés.
      Donc :

      Restent tous les autres articles.

      Parmis ces articles, tu veux les cinq plus récents.

      Donc :

      Il reste donc tous les articles, sauf ceux qui sont dans une rubrique exclue, ceux qui sont exclus, et les 5 plus récents. Et tu veux récupérer parmis ceux-ci les 10 plus récents.

      Donc :

      Toute la subtilité de la chose est dans le fait que {doublons} exclus les articles des sélections suivantes (si elles ont le critère {doublons} ! ). Donc, pour la boucle qui donne les dix articles les plus récents suivant les cinq plus récents, il faut bien choisir le critére d’affichage : {0,10}.

      C’est ce qui est expliqué dans la documentation au sujet des critères communs à toutes la boucles, section d’une partie des résultats, et plus particuliérement ce qui concerne les critères du type : {1/2}.

    • Le 29 juin 2004 à 21:11, par ? En réponse à : > Exclure selon un mot-clé

      Ca n’affiche rien parce que la 1re boucle ARTICLE (celle qui est dans la boucle RUBRIQUE) sélectionne tous les articles. En ajoutant id_rubrique à cette boucle ARTICLE c’est l’effet inverse !

      Par contre, ton explication m’a aidé (les 2 dernière boucles sont justes), et j’arrive à m’en sortir comme suit en tirant parti du fait que les articles de ma rubrique à exclure ont obligatoirement le mot clé _Agenda. C’est d’ailleurs encore mieux car c’est le secteur qui est ainsi éliminé.

      <BOUCLE_exclure (ARTICLES){type_mot=_Agenda}{doublons}>
      </BOUCLE_exclure>

      <BOUCLE_article_un(ARTICLES){par date} {inverse}{0,5}{doublons}>
             Affichage detaillé
      </BOUCLE_article_un>


      <BOUCLE_articles_recents(ARTICLES){par date} {inverse}{0,15}{doublons}>
              Affichage sommaire
      </BOUCLE_articles_recents>

      Merci beaucoup !

      Marc

    • Le 30 juin 2004 à 14:30, par Olivier GENDRIN En réponse à : > Exclure selon un mot-clé

      Oups, exact...

      Bon, voilà le code complet et cortrigé qui devrait fonctionner :

    Répondre à ce message

  • Le 21 janvier 2007 à 01:35, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

    Bonsoir Olivier,

    En spip 1.9.1 [7502] en localhost, ça ne marche pas. J’intègre les boucles d’exclusion, et les titres qui devraient disparaitre s’affichent toujours en ligne même après vidage des caches (spip et fifox)

    Déjà sur une 1.8.x je n’arrivais pas non plus à utiliser ta contrib.

    Saurais tu d’où ça peut venir ?

    Merci de ton aide.

    • Le 21 janvier 2007 à 22:44, par Olivier GENDRIN En réponse à : Exclure selon un mot-clé

      Sans boucle exemple, je ne peux pas tellement te dire où est le problème…

      Est-ce que ta boucle exclure comporte au moins un espace entre et  ?

    • Le 21 janvier 2007 à 22:46, par Olivier GENDRIN En réponse à : Exclure selon un mot-clé

      entre <BOUCLE_> et </BOUCLE_> ?

    • Le 22 janvier 2007 à 00:56, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      Je te poste la boucle. Désolé pour l’oubli.
      En fait, c’est la boucle de mon inc-rubrique.html

    • Le 22 janvier 2007 à 08:04, par Olivier GENDRIN En réponse à : Exclure selon un mot-clé

      Cette boucle me semble fonctionnelle, tu devrais regarder ce que renvoie ta boucle d’exclusion en lui faisant afficher #ID_RUBRIQUE.

    • Le 22 janvier 2007 à 23:32, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      La boucle_no_rub ne renvoit désespérément rien ! Pas même la puce image que j’affiche devant le #ID_RUBRIQUE

      J’ai revérifié (juste au cas où je ne saurais plus écrire « invisible ») dans mon interface privée. Tout est OK de ce côté là.

      J’ai tenté en remplaçant/rajoutant des critères (racines) ou (tout) mais vraiment rien n’y fait. Je ne comprends plus.

    • Le 22 janvier 2007 à 23:51, par Olivier GENDRIN En réponse à : Exclure selon un mot-clé

      Tu n’aurais pas un autre {doublons} qui interférerais ?

      Si tu met tes boucles toutes seules dans un fichier dédié, il se passe quoi ?

    • Le 23 janvier 2007 à 05:32, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      Là ca marche. Et la boucle no_rub me renvoit bien l’id de la rubrique que je cherche à shunter.

      Ce que je ne comprends pas, c’est que cette boucle se situe DEJA toute seule dans un fichier dédié. En l’occurence le inc_rubriques.html de la distrib de base. Et hormis pour tenter d’exclure cette rubrique, je n’ai pas modifier la boucle d’origine. A une ou deux puces graphiques près, et les (doublons) de ta contrib, le fichier est quasi identique à celui de la dist.

    • Le 23 janvier 2007 à 13:19, par kayou En réponse à : Exclure selon un mot-clé

      Bonjour Zzz,

      le fichier inc_rubriques.html est appelé à l’intérieur d’un autre fichier (sommaire.html) qui a lui-même des boucles.

      Ce sont peut-être celle-ci qui sont en conflit.

      Pour vérifier, d’où provient l’origine du conflit, tu peux essayer de mettre en commentaire toutes les autres boucles précédent celle de inc_rubriques.html, et les réactiver 1 par 1 jusqu’à trouver la coupable....

      Bon courage

    • Le 23 janvier 2007 à 23:00, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      Yep, ben quand tu sais que même mes fichiers rubriques, articles et les autres posent problème, je vais commencer maintenant alors parce que j’ai du « Spipain » sur la planche...

      En tout cas, merci à vous 2 pour vos coups de pattes ;)

    • Le 23 décembre 2007 à 01:38, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      Bonsoir,

      Plusieurs mois après la bataille, je reviens avec le même problème. En janvier dernier j’avais finis par contourner le problème en plaçant des {id_rubrique != XYZ} pour exclure les 2 rubriques que je voulais shunter mais là je suis sur un autre projet en 192c et je ne peux pas me permettre d’utiliser cette soluce parce que au final je ne sais pas combien de rubrique invisible mon client va vouloir me créer.

      Du coup je sèche gravement là.
      Et comparé à la dernière fois, ce coup-ci, la boucle, même isolée dans un fichier à part ne fonctionne pas. Je ne sais plus quoi faire là.

      ma boucle du jour, toujours dans dist/inc/rubriques.html :

      Si quelqu’un a une idée, je lui paie une bière à la prochaine Party où je me pointe et où je le croise.

      Bonne nuit à tous.

      EDIT : Bon... on en parle aussi ici si ca peut servir à quelqu’un...

    • Le 10 janvier 2008 à 17:25, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      EUREKA !!!!

      En fait, ce sont les déclaration <B_rubrique> et </B_rubrique> qui posaient problème.

      En les supprimant, j’arrive à faire ce que je voulais faire.

      Merci à la liste Spip-user en tout cas pour les pistes proposées ;)

      Pour info, la boucle finalement opérationnelle :

    • Le 3 mars 2008 à 15:43, par cc En réponse à : Exclure selon un mot-clé

      Merci mille fois pour cette contrib !!!! j’avais commence a desesperer.
      J’utilise 1.92d et la syntaxe  !id_mot=5 ne marche toujours pas.

    • Le 3 mars 2008 à 18:41, par Loiseau2nuit En réponse à : Exclure selon un mot-clé

      Normal !

       !id_mot=5 ne marche toujours pas.

      Essaie avec id_mot !=5 et ca devrait mieux fonctionner déjà ;)

    • Le 4 mars 2008 à 09:38, par cc En réponse à : Exclure selon un mot-clé

      Oui, j’avais deja essaye cette syntaxe, ca ne marche pas non plus.
      En fait, je faisais allusion a cette contrib qui l’utilise :
      http://www.weblog.eliaz.fr/article36.html

    • Le 9 mai 2008 à 12:27, par a En réponse à : Exclure selon un mot-clé

      merci pour cette solution !

      j’avais exactement le même problème : j’avais mis la boule exclure à l’intérieur du « B_articles » de la boucle articles non exclus.
      pb résolu en mettant la boucle exclure au dessus du « B_articles »...

    Répondre à ce message

  • Le 5 avril 2006 à 08:51, par mailou En réponse à : Exclure selon un mot-clé

    Bonjour,

    J’ai beau retourner dans tous les sens, je ne règle mon problème, qui est le suivant :

    Pour exclure une rubrique, j’utilise cette boucle <BOUCLE_secteurs(RUBRIQUES) {racine}{id_rubrique!==^(5|16|18)$} {par titre}>

    La rubrique est identifiée par son numéro.

    Par contre, dans certains cas, je souhaite conserver la rubrique, mais exclure seulement les sous rubriques de cette même sous rubrique, mais par mot clé.

    Ci-joint le menu complet

    <BOUCLE_secteurs(RUBRIQUES) {racine}{id_rubrique!==^(5|16|18)$} {par titre}>
            <li<BOUCLE_smenr(RUBRIQUES){id_parent}{0,1}> class="smenu"</BOUCLE_smenr>><a href="#URL_RUBRIQUE"><font color="#FF0000"><span style="text-decoration: none">[(#TITRE|supprimer_numero)]</span></font></a><font color="#FF0000">
            </font>
             <B_rubriques>
                    <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
                    <li<BOUCLE_smen(RUBRIQUES){id_parent}{0,1}>class="smenu"</BOUCLE_smen>></b><a href="#URL_RUBRIQUE"><font size="2"><span style="text-decoration: none">[(#TITRE|supprimer_numero)]</span></font></a><b>
                    <BOUCLE_sous_rubriques(BOUCLE_rubriques)> </BOUCLE_sous_rubriques></li><//B_sous_rubriques>
             </BOUCLE_rubriques>

    Merci de m’aider

    • Le 5 avril 2006 à 09:55, par ventrea En réponse à : Exclure selon un mot-clé

      Tu peux utiliser la même technique que celle présentée ici mais sur des rubriques :

      -  tu places une ou plusieurs boucles RUBRIQUES avec un critères doublon qui vont choisir les rubriques à éliminer.

      Si tu souhaites éliminer celles qui incorporent un mot clé tu ajoute ce mot clefs comme critère.

      Si ces rubriques sont uniquement des sous rubriques il faut aussi ajouter l’id_parent.

      -  Ensuite tu as ta boucle RUBRIQUES d’affichage qui intègre aussi ce doublon pour ne pas afficher les rubriques précédemment choisies.

      a+

    • Le 12 avril 2006 à 15:42, par mailou En réponse à : Exclure selon un mot-clé

      Je te remercie pour ta réponse, mais j’ai complètement échoué, tant pis, je vais utiliser la technique qui m’est habituelle, à savoir exclure la rubrique par <BOUCLE_secteurs(RUBRIQUES) racineid_rubrique !==^(5|2|3|4)rajouter le nom de la rubrique hors menu, faire un lien pour les sous rubriques.

      Quand je serais meilleur dans le langage des boucles ...... on verra

      Merci et @+

    Répondre à ce message

  • Le 8 janvier 2005 à 17:45, par Mourad En réponse à : > Exclure selon un mot-clé

    Bonjour, Je souhaiterais appliquer l’exclusion selon un mot clé à un forum, ne maîtrisant pas les boucles, je tourne en rond depuis qq semaines. Je vous explique mon pb. : Je souhaite afficher dans le forum que les messages auxquels il y a eu une réponse. J’utilise pour ça un mot clé « validé » qu’il est possible de relier à un message. Comment donc afficher le message parent sachant qu’il n’est pas possible de le relier à un mot clé. Pour résumer je souhaite afficher un message (qui dans mon cas ce sont des questions) qu’un fois qu’un modérateur a répondu à ce message en le validant (avec le mot clé validé). Merci d’avance.

    • Le 15 janvier 2005 à 22:45, par Olivier G. En réponse à : > Exclure selon un mot-clé

      Ca me semble bien compliqué ton histoire, tu ferais mieux de demander sur la ML spip@rezo.net qu’on débrousaille tout ça.

    Répondre à ce message

  • Le 8 janvier 2005 à 17:42, par ? En réponse à : > Exclure selon un mot-clé

    Bonjour, Je souhaiterais appliquer l’exclusion selon un mot clé à un forum, ne maîtrisant pas les boucles, je tourne en rond depuis qq semaines. Je vous explique mon pb. : Je souhaite afficher dans le forum que les messages auxquels il y a eu une réponse. J’utilise pour ça un mot clé « validé » qu’il est possible de relier à un message. Comment donc afficher le message parent sachant qu’il n’est pas possible de le relier à un mot clé. Pour résumer je souhaite afficher un message (qui dans mon cas ce sont des questions) qu’un fois qu’un modérateur a répondu à ce message en le validant (avec le mot clé validé). Merci d’avance.

    Répondre à ce message

  • Le 8 janvier 2005 à 17:20, par mourad En réponse à : > Exclure selon un mot-clé

    Bonjour,
    Je souhaiterais appliquer l’exclusion selon un mot clé à un forum, ne maîtrisant pas les boucles, je tourne en rond depuis qq semaines.
    Je vous explique mon pb. :
    Je souhaite afficher dans le forum que les messages auxquels il y a eu une réponse.
    J’utilise pour ça un mot clé « validé » qu’il est possible de relier à un message.
    Comment donc afficher le message parent sachant qu’il n’est pas possible de le relier à un mot clé. Pour résumer je souhaite afficher un message (qui dans mon cas ce sont des questions) qu’un fois qu’un modérateur a répondu à ce message en le validant (avec le mot clé validé).
    Merci d’avance.

    Répondre à ce message

  • Le 21 juin 2004 à 12:01, par emma En réponse à : > Exclure selon un mot-clé

    Juste une chose que je ne comprends pas .... pourquoi l’écriture «  »

    ne fonctionnes pas ? J’essaye et ça ne marche pas. Pourtant l’opérateur != me semblait de loin le plus pertinent pour ce type d’opérations....

    Merci pour ta contrib.

    • Le 21 juin 2004 à 13:35, par ? En réponse à : > Exclure selon un mot-clé

      le critère {titre_mot!=restreint} fonctionne seulement sur l’ensemble des objets (ici rubriques) qui ont un mot-clé, et pas sur la totalité des objets.

      NB : il faut encadrer les morceaux de code par la balise <code>, sinon, ils sont interprétés par le navigateur et pas affichés.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • GIS 4

    11 août 2012 – 1417 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Plugin Domlang : Domaines par secteur de langue

    4 septembre – commentaires

    Domlang est un plugin qui permet d’associer un nom de domaine ou un sous-domaine à un secteur de langue. Ce plugin convient pour un site qui utilise des secteurs de langues. En configuration, pour chaque secteur, vous pourrez définir une URL (...)

  • Menu de langues sous forme de liens

    30 novembre 2009 – 121 commentaires

    Par défaut, le menu de langue de SPIP s’affiche : Sous la forme d’une liste déroulante ; En affichant toutes les langues du site, qu’elles soient utilisées ou non (c’est à même si elles ne sont pas affectées à au moins un article ou une rubrique) ; Sans (...)

  • Agenda 2.0

    3 novembre 2008 – 1098 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. Pour une documentation concernant l’utilisation d’Agenda 3 pour SPIP 3, veuillez pour l’instant vous référer à SPIP 3, Agenda (...)

  • Mailsubscribers

    16 janvier 2013 – 332 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de (...)