Boucle sur la non-sélection

Bonjour,

Je débute avec spip, et bien que dans le métier, j’avoue avoir un peu de mal avec la syntaxe.

Quoi qu’il en soit, SPIP me semble un excellent outil pour ce que je veux faire, et je suis bien décidé à aller plus loin.

J’ai donc commencé à modifier mon template afin d’afficher d’abord les sélections de la rubtique (des articles peuvent être flaggés à une rubrique comme sélectionnées, grace au plugin « Sélection d’articles » : http://plugins.spip.net/selection-d-articles).

Le site du plugin m’a donné le code pour boucler sur cette sélection (voir lien précédent):

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

  2. #TITRE

  3. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>

  4. #TITRE
  5. BOUCLE_selection>

  6. </BOUCLE_principale>

Aussi, je voudrais ensuite afficher les autres articles (faire la boucle des éléments non cités dans la boucle précédente).

Donc je voudrais remplacer la jointure id=rubrique par quelque chose du type « not exists » ou « not in » (en sql), mais je ne comprends pas bien la syntaxe.
J’imagine par exemple quelque chose comme ça:

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

  2. #TITRE

    1. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{NOT spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>
  3. #TITRE
  4. BOUCLE_selection>

  5. </BOUCLE_principale>

Quelqu’un sait-il comment faire?

Merci d’avance!

Nicolas Toublanc a écrit :

Bonjour,

Je débute avec spip, et bien que dans le métier, j’avoue avoir un peu de mal avec la syntaxe.

Quoi qu’il en soit, SPIP me semble un excellent outil pour ce que je veux faire, et je suis bien décidé à aller plus loin.

J’ai donc commencé à modifier mon template afin d’afficher d’abord les sélections de la rubtique (des articles peuvent être flaggés à une rubrique comme sélectionnées, grace au plugin « Sélection d’articles » : http://plugins.spip.net/selection-d-articles).

Le site du plugin m’a donné le code pour boucler sur cette sélection (voir lien précédent):

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

  2. #TITRE

  3. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>

  4. #TITRE
  5. BOUCLE_selection>

  6. </BOUCLE_principale>

Aussi, je voudrais ensuite afficher les autres articles (faire la boucle des éléments non cités dans la boucle précédente).

Donc je voudrais remplacer la jointure id=rubrique par quelque chose du type « not exists » ou « not in » (en sql), mais je ne comprends pas bien la syntaxe.
J’imagine par exemple quelque chose comme ça:

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

  2. #TITRE

    1. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{NOT spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>
  3. #TITRE
  4. BOUCLE_selection>

  5. </BOUCLE_principale>

Quelqu’un sait-il comment faire?

Merci d’avance!


---

Il suffit de rajouter le critère {doublons} dans tes boucles « selection »
Mais attention, il ne faut pas donner 2 fois le même nom à tes boucles
Donc un truc comme ça :

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

  2. #TITRE

  3. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}{doublons}>

  4. #TITRE
  5. BOUCLE_selection>

  6. </BOUCLE_principale>

  7. <BOUCLE_principale2(RUBRIQUES){id_rubrique}>

  8. #TITRE

    1. <BOUCLE_selection2(ARTICLES pb_selection){par ordre}{doublons}>
  9. #TITRE
  10. BOUCLE_selection2>

  11. </BOUCLE_principale2>

NB : tu peux aussi sélectionner des articles avec un mot-clé (à créer et à leur attribuer)
ensuite tu les selectionne avec {titre_mot=XXX}

Ok, merci, ça parait super simple.

Mais chez moi, ça ressemble désormais à ça :

<BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [
    (#CHAPO|image_reduire{500,0})
    ] [
    (#TEXTE|image_reduire{500,0})
    ]
  • suivi par

    <BOUCLE_articles(ARTICLES) {id_rubrique} {par date}{inverse} {pagination}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
  • donc le problème est peut-être le group_by, c’est pb_selection ?

    2008/12/30 Jean-Christophe Villeneuve <jcvilleneuve@cegetel.net>

    Nicolas Toublanc a écrit :

    Bonjour,

    Je débute avec spip, et bien que dans le métier, j’avoue avoir un peu de mal avec la syntaxe.

    Quoi qu’il en soit, SPIP me semble un excellent outil pour ce que je veux faire, et je suis bien décidé à aller plus loin.

    J’ai donc commencé à modifier mon template afin d’afficher d’abord les sélections de la rubtique (des articles peuvent être flaggés à une rubrique comme sélectionnées, grace au plugin « Sélection d’articles » : http://plugins.spip.net/selection-d-articles).

    Le site du plugin m’a donné le code pour boucler sur cette sélection (voir lien précédent):

    1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

    2. #TITRE

    3. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>

    4. #TITRE
    5. BOUCLE_selection>

    6. </BOUCLE_principale>

    Aussi, je voudrais ensuite afficher les autres articles (faire la boucle des éléments non cités dans la boucle précédente).

    Donc je voudrais remplacer la jointure id=rubrique par quelque chose du type « not exists » ou « not in » (en sql), mais je ne comprends pas bien la syntaxe.
    J’imagine par exemple quelque chose comme ça:

    1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

    2. #TITRE

      1. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{NOT spip_pb_selection.id_rubrique=#ID_RUBRIQUE}>
    3. #TITRE
    4. BOUCLE_selection>

    5. </BOUCLE_principale>

    Quelqu’un sait-il comment faire?

    Merci d’avance!

    
    ---
    
    

    Il suffit de rajouter le critère {doublons} dans tes boucles « selection »
    Mais attention, il ne faut pas donner 2 fois le même nom à tes boucles
    Donc un truc comme ça :

    1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>

    2. #TITRE

    3. <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}{doublons}>

    4. #TITRE
    5. BOUCLE_selection>

    6. </BOUCLE_principale>

    7. <BOUCLE_principale2(RUBRIQUES){id_rubrique}>

    8. #TITRE

      1. <BOUCLE_selection2(ARTICLES pb_selection){par ordre}{doublons}>
    9. #TITRE
    10. BOUCLE_selection2>

    11. </BOUCLE_principale2>

    NB : tu peux aussi sélectionner des articles avec un mot-clé (à créer et à leur attribuer)
    ensuite tu les selectionne avec {titre_mot=XXX}

    Nicolas Toublanc a écrit :

    Ok, merci, ça parait super simple.

    Mais chez moi, ça ressemble désormais à ça :

    <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [
    (#CHAPO|image_reduire{500,0})
    ] [
    (#TEXTE|image_reduire{500,0})
    ]
  • suivi par

    <BOUCLE_articles(ARTICLES) {id_rubrique} {par date}{inverse} {pagination}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
  • donc le problème est peut-être le group_by, c’est pb_selection ?

    En mettant le critère {doublons} aussi sur ta première boucle, ça devrait suffire.

    Merci beaucoup, ça à l’air de fonctionner.

    Ca fonctionne comment, derrière, je suppose que c’est géré en php en se basant sur l’id de l’article?

    Au niveau perf, ça peut poser des problèmes avec une forte volumétrie, non?

    2008/12/30 Jean-Christophe Villeneuve <jcvilleneuve@cegetel.net>

    Nicolas Toublanc a écrit :

    Ok, merci, ça parait super simple.

    Mais chez moi, ça ressemble désormais à ça :

    <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [
    (#CHAPO|image_reduire{500,0})
    ] [
    (#TEXTE|image_reduire{500,0})
    ]
  • suivi par

    <BOUCLE_articles(ARTICLES) {id_rubrique} {par date}{inverse} {pagination}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
  • donc le problème est peut-être le group_by, c’est pb_selection ?

    En mettant le critère {doublons} aussi sur ta première boucle, ça devrait suffire.

    Nicolas Toublanc a écrit :

    Merci beaucoup, ça à l’air de fonctionner.
    Ca fonctionne comment, derrière, je suppose que c’est géré en php en se basant sur l’id de l’article?

    Au niveau perf, ça peut poser des problèmes avec une forte volumétrie, non?

    Alors là ça dépasse mes compétences.
    Je ne suis qu’un simple utilisateur de spip et pas du tout développeur.
    Un autre colistier plus éclairé pourra sans doute t’en dire un peu plus.

    2008/12/30 Jean-Christophe Villeneuve <jcvilleneuve@cegetel.net>

    Nicolas Toublanc a écrit :

    Ok, merci, ça parait super simple.

    Mais chez moi, ça ressemble désormais à ça :

    <BOUCLE_selection(ARTICLES pb_selection){par ordre}{spip_pb_selection.id_rubrique=#ID_RUBRIQUE}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [
    (#CHAPO|image_reduire{500,0})
    ] [
    (#TEXTE|image_reduire{500,0})
    ]
  • suivi par

    <BOUCLE_articles(ARTICLES) {id_rubrique} {par date}{inverse} {pagination}{doublons}>

  • [(#LOGO_ARTICLE|#URL_ARTICLE|image_reduire{150,100})]

    #TITRE

    [(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
  • donc le problème est peut-être le group_by, c’est pb_selection ?

    En mettant le critère {doublons} aussi sur ta première boucle, ça devrait suffire.