SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Navigation > Tris conditionnels

Exclure selon un mot-clé

dimanche 16 mai 2004, par Olivier GENDRIN. Dernier ajout jeudi 7 décembre 2006

Toutes les versions de cet article :


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


Répondre à cet article

  • Exclure selon un mot-clé

    21 janvier 2007 01:35, par Zzz.

    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.

    Répondre à ce message

    • Exclure selon un mot-clé 21 janvier 2007 22:44, par Olivier GENDRIN

      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  ?

      Répondre à ce message

      • Exclure selon un mot-clé 21 janvier 2007 22:46, par Olivier GENDRIN

        entre <BOUCLE_> et </BOUCLE_> ?

        Répondre à ce message

        • Exclure selon un mot-clé 22 janvier 2007 00:56, par Zzz.

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

          Répondre à ce message

          • Exclure selon un mot-clé 22 janvier 2007 08:04, par Olivier GENDRIN

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

            Répondre à ce message

            • Exclure selon un mot-clé 22 janvier 2007 23:32, par Zzz.

              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.

              Répondre à ce message

              • Exclure selon un mot-clé 22 janvier 2007 23:51, par Olivier GENDRIN

                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 ?

                Répondre à ce message

                • Exclure selon un mot-clé 23 janvier 2007 05:32, par Zzz.

                  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.

                  Répondre à ce message

                  • Exclure selon un mot-clé 23 janvier 2007 13:19, par kayou

                    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

                    Répondre à ce message

                    • Exclure selon un mot-clé 23 janvier 2007 23:00, par Zzz.

                      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 ;)

                      Répondre à ce message

                      • Exclure selon un mot-clé 23 décembre 2007 01:38, par Loiseau2nuit (ex Zzz.)

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

                        Répondre à ce message

                        • Exclure selon un mot-clé 10 janvier 2008 17:25, par Loiseau2nuit

                          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 :

                          Répondre à ce message

                          • Exclure selon un mot-clé 3 mars 2008 15:43, par cc

                            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.

                            Répondre à ce message

                          • Exclure selon un mot-clé 9 mai 2008 12:27, par a

                            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

    Retour au début des forums

  • Exclure selon un mot-clé

    5 avril 2006 08:51, par mailou

    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

    Répondre à ce message

    • Exclure selon un mot-clé 5 avril 2006 09:55, par ventrea

      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+

      Répondre à ce message

      • Exclure selon un mot-clé 12 avril 2006 15:42, par mailou

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

    Retour au début des forums

  • > Exclure selon un mot-clé

    8 janvier 2005 17:45, par Mourad

    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

    Retour au début des forums

  • > Exclure selon un mot-clé

    8 janvier 2005 17:42

    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

    Retour au début des forums

  • > Exclure selon un mot-clé

    8 janvier 2005 17:20, par mourad

    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

    Retour au début des forums

  • > Exclure selon un mot-clé

    27 juin 2004 19:54, par Marcopol

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

    Répondre à ce message

    • > Exclure selon un mot-clé 28 juin 2004 13:17, par Olivier G.

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

      Répondre à ce message

      • > Exclure selon un mot-clé 28 juin 2004 21:24

        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 ?

        Répondre à ce message

        • > Exclure selon un mot-clé 29 juin 2004 00:13, par Olivier G.

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

          Répondre à ce message

          • > Exclure selon un mot-clé 29 juin 2004 21:11

            Ca n’affiche rien parce que la 1ère 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

            Répondre à ce message

            • > Exclure selon un mot-clé 30 juin 2004 14:30, par Olivier GENDRIN

              Oups, exact...

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

              Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net