Articles listés pas deux mots-clés, un mot-clé devant exclure certains indésirables

Hola !

Ce n'est pas un problème de SPIP, sinon plutôt de ma capacité d'abstraction qui doit être très proche de celle du ver solitaire.

Ce que je désire, au sein d'une rubrique :

1) Lister les articles qui ont un mot-clé du groupe 4

2) Lister les articles qu'ont en plus le mot-clé "Article introductif"

3) Ne pas mêler les uns aux autres, chose qui se produit implacablement.
La BOUCLE_ULTRA_FINE (de fine elle n'a que le nom) me ramène systématiquement tous les articles.

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}> <BOUCLE_FINE(ARTICLES){id_rubrique}
  {titre_mot=Article introductif}{doublons}>
        
    [<h3 class="Titre3">(#TITRE)</h3>]
      
    <BOUCLE_OFF(MOTS){titre !=Article introductif}>
    <BOUCLE_ULTRA_FINE(ARTICLES){id_rubrique}{doublons}>
        <p class="pave120">#TITRE<br></p>
    </BOUCLE_ULTRA_FINE>

    </BOUCLE_OFF>

  </BOUCLE_FINE>
</BOUCLE_DEST>

Cordialement

Luis

Le 15 oct. 07 à 19:57, Luis Speciale a écrit :

Hola !

Ce n'est pas un problème de SPIP, sinon plutôt de ma capacité
d'abstraction qui doit être très proche de celle du ver solitaire.

Ce que je désire, au sein d'une rubrique :

1) Lister les articles qui ont un mot-clé du groupe 4

2) Lister les articles qu'ont en plus le mot-clé "Article introductif"

3) Ne pas mêler les uns aux autres, chose qui se produit implacablement.
La BOUCLE_ULTRA_FINE (de fine elle n'a que le nom) me ramène
systématiquement tous les articles.

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
<BOUCLE_FINE(ARTICLES){id_rubrique}
  {titre_mot=Article introductif}{doublons}>
        
    [<h3 class="Titre3">(#TITRE)</h3>]
      
    <BOUCLE_OFF(MOTS){titre !=Article introductif}>
    <BOUCLE_ULTRA_FINE(ARTICLES){id_rubrique}{doublons}>

tu as deux fois le même {doublons} dans ta BOUCLE_FINE, puisque ULTRA-FINE est à l'intérieur de FINE

Claude

        <p class="pave120">#TITRE<br></p>
    </BOUCLE_ULTRA_FINE>

    </BOUCLE_OFF>

  </BOUCLE_FINE>
</BOUCLE_DEST>

Cordialement

Luis

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

dlatr a écrit :

tu as deux fois le même {doublons} dans ta BOUCLE_FINE, puisque ULTRA- FINE est à l'intérieur de FINE

Claude

Non; hélas, ça doit être plus grave que ça. Si je les enleve, les doublons me mitraillent.

Mais merci tout de même.

Luis

Luis Speciale a écrit :

Hola !

Ce n'est pas un problème de SPIP, sinon plutôt de ma capacité d'abstraction qui doit être très proche de celle du ver solitaire.

Ce que je désire, au sein d'une rubrique :

1) Lister les articles qui ont un mot-clé du groupe 4

2) Lister les articles qu'ont en plus le mot-clé "Article introductif"

3) Ne pas mêler les uns aux autres, chose qui se produit implacablement.
La BOUCLE_ULTRA_FINE (de fine elle n'a que le nom) me ramène systématiquement tous les articles.

ben c'est pas ce que tu fais :

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>

pour chaque mot du groupe 4

<BOUCLE_FINE(ARTICLES){id_rubrique}
  {titre_mot=Article introductif}{doublons}>

lister les articles ayant le mot-clé "Article introductif" (mais pas forcement un du groupe 4)

    [<h3 class="Titre3">(#TITRE)</h3>]
      
    <BOUCLE_OFF(MOTS){titre !=Article introductif}>

et pour chacun de ces articles lister tous les mots (de tous les groupes) n'etant pas Article introductif

    <BOUCLE_ULTRA_FINE(ARTICLES){id_rubrique}{doublons}>

et donc pour chacun de ces mots / articles / mots, lister tous les articles de la rubrique (de l'article en question)

bref, c'est vraiment pas ca...
d'après l'enoncé, je dirais simplement :

<BOUCLE_IN1(ARTICLES){id_rubrique}{id_groupe=4}{doublons groupe}></BOUCLE_EX>
<BOUCLE_IN2(ARTICLES){id_rubrique}{titre_mot=Article introductif}{!doublons groupe}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_EX>

mais vu la complexité de ta boucle, il doit me manquer des elements.

peut etre :
<BOUCLE_IN1(ARTICLES){id_rubrique}{id_groupe=4}{doublons groupe}></BOUCLE_EX>
<BOUCLE_IN2(ARTICLES){id_rubrique}{titre_mot=Article introductif}{!doublons groupe}{doublons intro}>
</BOUCLE_EX>

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
[<h3 class="Titre3">(#TITRE)</h3>]
<BOUCLE_IN(ARTICLES){doublons intro}{id_mot}{!doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>
</BOUCLE_DEST>

pour avoir :
<h3 class="Titre3">un mot du groupe 4</h3>
<p class="pave120">un article ayant ce mot et Article introductif</p>
<p class="pave120">un autre article ayant ce mot et Article introductif</p>

<h3 class="Titre3">un autre mot du groupe 4</h3>
<p class="pave120">un article ayant ce mot et Article introductif</p>
<p class="pave120">un autre article ayant ce mot et Article introductif</p>

...

@++

Stephane a écrit :

> (…) mais vu la complexité de ta boucle

J'ai essayé les boucles que tu as suggéré, et ceci de multiples manières. Et non.
Je veux lister, par les mots-clés du groupe 4, les articles ayant ce mot-clé et ensuite soustraire de cette liste les articles ayant en plus le mot-clé "Article introductif" pour les afficher en tête de liste.

Ce que devrait donner

<Liste des articles ayant un mot 4, par mot>

  <Mot 1 du groupe 4>

    <sort du lot>
    Article 22 (Ayant en plus le mot Article introductif,
    se retrouvant en tête et exclu)
    </sort du lot>

    Article 1
    Article 5

  </Mot 1 du groupe 4>

  <Mot 2 du groupe 4>

    <sort du lot>… etc

</Liste des articles ayant un mot 4>

Mais j'en suis à me demander si ce n'est pas un problème de logique, tout simplement.
Le polatouche ne fait pas ce que je veux et il a raison, je lui demande de conter ses billes et après je veux lui en piquer une.

Merci beaucoup pour ta réponse, de toutes façons. Si je trouve, j'avise.
En tout cas, le fait que tu considères ma boucle comme étant complexe me rassure, à chaque fois que je rentre dans des bourbiers comme celui-ci, j'ai peur pour mes capacités intellectuelles.

Cordialement

Luis

Luis Speciale a écrit :

Hola !

Ce n'est pas un problème de SPIP, sinon plutôt de ma capacité d'abstraction qui doit être très proche de celle du ver solitaire.

Ce que je désire, au sein d'une rubrique :

1) Lister les articles qui ont un mot-clé du groupe 4

2) Lister les articles qu'ont en plus le mot-clé "Article introductif"

3) Ne pas mêler les uns aux autres, chose qui se produit implacablement.
La BOUCLE_ULTRA_FINE (de fine elle n'a que le nom) me ramène systématiquement tous les articles.

ben c'est pas ce que tu fais :

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>

pour chaque mot du groupe 4

<BOUCLE_FINE(ARTICLES){id_rubrique}
  {titre_mot=Article introductif}{doublons}>

lister les articles ayant le mot-clé "Article introductif" (mais pas forcement un du groupe 4)

    [<h3 class="Titre3">(#TITRE)</h3>]
      
    <BOUCLE_OFF(MOTS){titre !=Article introductif}>

et pour chacun de ces articles lister tous les mots (de tous les groupes) n'etant pas Article introductif

    <BOUCLE_ULTRA_FINE(ARTICLES){id_rubrique}{doublons}>

et donc pour chacun de ces mots / articles / mots, lister tous les articles de la rubrique (de l'article en question)

bref, c'est vraiment pas ca...
d'après l'enoncé, je dirais simplement :

<BOUCLE_IN1(ARTICLES){id_rubrique}{id_groupe=4}{doublons groupe}></BOUCLE_EX>
<BOUCLE_IN2(ARTICLES){id_rubrique}{titre_mot=Article introductif}{!doublons groupe}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_EX>

mais vu la complexité de ta boucle, il doit me manquer des elements.

peut etre :
<BOUCLE_IN1(ARTICLES){id_rubrique}{id_groupe=4}{doublons groupe}></BOUCLE_EX>
<BOUCLE_IN2(ARTICLES){id_rubrique}{titre_mot=Article introductif}{!doublons groupe}{doublons intro}>
</BOUCLE_EX>

<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
[<h3 class="Titre3">(#TITRE)</h3>]
<BOUCLE_IN(ARTICLES){doublons intro}{id_mot}{!doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>
</BOUCLE_DEST>

pour avoir :
<h3 class="Titre3">un mot du groupe 4</h3>
<p class="pave120">un article ayant ce mot et Article introductif</p>
<p class="pave120">un autre article ayant ce mot et Article introductif</p>

<h3 class="Titre3">un autre mot du groupe 4</h3>
<p class="pave120">un article ayant ce mot et Article introductif</p>
<p class="pave120">un autre article ayant ce mot et Article introductif</p>

...

@++

Luis Speciale a écrit :

Stephane a écrit :

> (…) mais vu la complexité de ta boucle

J'ai essayé les boucles que tu as suggéré, et ceci de multiples manières. Et non.
Je veux lister, par les mots-clés du groupe 4, les articles ayant ce mot-clé et ensuite soustraire de cette liste les articles ayant en plus le mot-clé "Article introductif" pour les afficher en tête de liste.

ah, OK, alors en fait, c'est encore plus simple :

[(#REM) recup de ceux ayant en plus article introductif et stockage dans doublons intro]
<BOUCLE_EX(ARTICLES){id_rubrique}{titre_mot=Article
introductif}{doublons intro}>
</BOUCLE_EX>

[(#REM) restitution par mot du groupe 4 en excluant intro]
<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
<B_IN>
[<h3 class="Titre3">(#TITRE)</h3>]
<BOUCLE_IN(ARTICLES){id_mot}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>
</BOUCLE_DEST>

pas testé comme d'ab mais ca doit etre ca

Stephane a écrit :

ah, OK, alors en fait, c'est encore plus simple :

Non, cela ne fait pas avancer le schmilblick. Par contre, j'ai trouvé une solution, juste avant ton dernier mail. Dans tous les tests précédents, j'avais presque le résultat escompté, exception faite l'inclusion dans la liste des articles de l'article qui avait le mot clé à exclure mais se présentait en deuxième position. Je me suis dis que la boucle sortait sans le voir, alors j'ai crée un deuxième mot-clé à exclure "Article introductif 2" et je l'ai escamoté de la liste finale et bingo !.

<BOUCLE_IN1(ARTICLES){id_rubrique}{titre_mot=Article introductif}{doublons intro}>

<BOUCLE_IN_OUT(ARTICLES){id_rubrique}{titre_mot=Article introductif 2}{doublons intro2}></BOUCLE_IN_OUT>
    
[<h3 class="Titre3">(#TITRE)</h3>]

<BOUCLE_IN2(ARTICLES){id_rubrique}{id_groupe=4}{doublons introbis}{!doublons intro}>

<BOUCLE_IN3(ARTICLES){id_rubrique}{titre_mot!=Article introductif 2}{doublons introbis}{doublons intro}{doublons intro2}>
  <p class="pave120">#TITRE</p>
</BOUCLE_IN3>
    
</BOUCLE_IN2>

</BOUCLE_IN1>

Je ne sais pas par contre si c'est safe et non gourmand. Qui plus est, je roule en dev pour ce projet. Avec Firefox, de temps en temps, à force de vider le cache (littéralement, en local je chope les fichiers et pomme delete, circulez il n'y a rien à voir) j'en perds feuilles de styles et plus si affinités : bref ça explose pas mal).

C'est ici que ça se passe, si tu veux passer voir (pas avec IE pour l'instant)

http://speciale.no-ip.info/Nortours/spip.php?rubrique3

Merci encore pour tes conseils et ta gentillesse.

Cordialement

Luis

Luis Speciale a écrit :

Stephane a écrit :

ah, OK, alors en fait, c'est encore plus simple :

Non, cela ne fait pas avancer le schmilblick.

mais si, mais si, il y avait encore une coquille mais c'etait presque ca...

je viens de relire ta demande et effectivement, j'avais oublié de ressortir les "intro" d'abord.

[(#REM) recup de ceux ayant en plus article introductif et stockage dans
doublons intro]
<BOUCLE_EX(ARTICLES){id_rubrique}{titre_mot=Article
introductif}{doublons intro}>
</BOUCLE_EX>

[(#REM) restitution par mot du groupe 4 en excluant intro]
<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
[<h3 class="Titre3">(#TITRE)</h3>]

<BOUCLE_IN1(ARTICLES){id_mot}{!doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>

<BOUCLE_IN(ARTICLES){id_mot}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>

</BOUCLE_DEST>

apres, pour gerer l'affichage conditionnel du mot (ne pas afficher si aucun article), c'est un peu plus tordu :

[(#REM) recup de ceux ayant en plus article introductif et stockage dans
doublons intro]
<BOUCLE_EX(ARTICLES){id_rubrique}{titre_mot=Article
introductif}{doublons intro}>
</BOUCLE_EX>

[(#REM) restitution par mot du groupe 4 en excluant intro]
<BOUCLE_DEST(MOTS){par titre}{id_groupe=4}>
<B_IN1>
[<h3 class="Titre3">(#TITRE)</h3>]
<BOUCLE_IN1(ARTICLES){id_mot}{!doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN1>

<BOUCLE_IN(ARTICLES){id_mot}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN>

</B_IN1>

<B_IN2>
[<h3 class="Titre3">(#TITRE)</h3>]
<BOUCLE_IN2(ARTICLES){id_mot}{doublons intro}>
<p class="pave120">#TITRE</p>
</BOUCLE_IN2>

<//B_IN1>

</BOUCLE_DEST>

voila, voila

enfin, l'important c'est que ca marche.

@++