Pagination et article en focus dans une rubrique

Bonsoir à tous,

Bon... soit je ne "spip" pas assez souvent, soit ce que je souhaite
faire est plus compliqué qu'il n'y paraît.

Je réalise un site de type blog, qui contient plusieurs rubriques.
Dans chaque rubrique, je liste les articles de la rubrique très
classiquement {par date}{inverse}.
Par contre, en haut de liste, je mets un ou deux articles importants
en focus, peu importe leur date, grâce à un mot-clé.

Là où ça se complique, c'est de combiner cela avec une pagination.
Comme {doublons} ne fonctionne pas d'une page à l'autre, je me
retrouve avec mes articles "focus" sur les pages 2, 3, 4 ... alors que
bien entendu, l'objectif est qu'ils ne soient visibles que sur la
première.

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

--
Crazyspip

Le 04.12.16 à 01:13, Crazy Spip a écrit :

Bonsoir à tous,

Bon... soit je ne "spip" pas assez souvent, soit ce que je souhaite
faire est plus compliqué qu'il n'y paraît.

Je réalise un site de type blog, qui contient plusieurs rubriques.
Dans chaque rubrique, je liste les articles de la rubrique très
classiquement {par date}{inverse}.
Par contre, en haut de liste, je mets un ou deux articles importants
en focus, peu importe leur date, grâce à un mot-clé.

Là où ça se complique, c'est de combiner cela avec une pagination.
Comme {doublons} ne fonctionne pas d'une page à l'autre, je me
retrouve avec mes articles "focus" sur les pages 2, 3, 4 ... alors que
bien entendu, l'objectif est qu'ils ne soient visibles que sur la
première.

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

avec un tel système imbriqué, je vois pas comment tu pouvais esperer t'en sortir.

Ton problème si je comprend bien est d'avoir
1) d'abord tes articles epinglés
2) puis les autres articles triés par date inverse
3) le tout pagine de sorte à n'avoir que 10 articles à la fois

le problème est dans le melange de 2 types de tri pour une seule boucle paginé. La solution que je vois est de remplir un tableau avec les {id_article} dans l'ordre qui t'intéresse, sans te soucier de la pagination, puis de boucler sur le résultat de ce tableau. C'est pas optimal si tu as beaucoup d'article, mais avec peu d'article ca joue.

#SET{articles,#LISTE}
<BOUCLE_epingles(ARTICLES){id_mot=1}{id_rubrique}{doublons epingles}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_epingles>
<BOUCLE_normal(ARTICLES){doublons epingles}{id_rubrique}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_normal>
<BOUCLE_affichage(ARTICLES){pagination 10}{id_article IN #GET{articles}}>
BALISE pour afficher l'article
</BOUCLE_affichage>
#PAGINATION
</B_affichage>
--
Maïeul

Le 04/12/2016 à 01:13, Crazy Spip a écrit :

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

Bjr.
Peut-être faut-il mettre en place une structure du genre (ce n'est pas spécifique Spip, plutôt une règle algorithmique) :
<boucle articles>
<boucle focus> avec le filtre id_mot=1
</boucle focus>
<boucle pas focus> avec le filtre id_mot !=1
</boucle pas focus>
</boucle articles>
Parce que dans ta strucutre actuelle, une fois affiché les articles focus, tu listes tout le monde.

Je ne suis as s$ir d'avoir compris ton pb, parce je ne vois pas le rapport avec la pagination. Mais je ne suis pas trop fortiche en Spip.
Didier.

Je ferais une première boucle avec {doublons} pour afficher les articles focus

et à part, une autre boucle avec {doublons} pour les autres articles avec la pagination

Le 04/12/2016 à 11:08, Didier a écrit :

Le 04/12/2016 à 01:13, Crazy Spip a écrit :

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

Bjr.
Peut-être faut-il mettre en place une structure du genre (ce n'est pas spécifique Spip, plutôt une règle algorithmique) :
<boucle articles>
<boucle focus> avec le filtre id_mot=1
</boucle focus>
<boucle pas focus> avec le filtre id_mot !=1
</boucle pas focus>
</boucle articles>
Parce que dans ta strucutre actuelle, une fois affiché les articles focus, tu listes tout le monde.

Je ne suis as s$ir d'avoir compris ton pb, parce je ne vois pas le rapport avec la pagination. Mais je ne suis pas trop fortiche en Spip.
Didier.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Bonjour Jean-Christophe,

Merci pour ta réponse.
C'est ce que j'avais fait en tout premier lieu mais ça ne fonctionne
pas. En faisant ça, mes articles focus se retrouvent en haut de chaque
page de la pagination. Or je ne les veux que sur la première page
paginée.

Bonne journée.

Le 4 décembre 2016 à 11:59, Jean-Christophe Villeneuve
<jcvilleneuve@cegetel.net> a écrit :

Je ferais une première boucle avec {doublons} pour afficher les articles
focus

et à part, une autre boucle avec {doublons} pour les autres articles avec la
pagination

Le 04/12/2016 à 11:08, Didier a écrit :

Le 04/12/2016 à 01:13, Crazy Spip a écrit :

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

Bjr.
Peut-être faut-il mettre en place une structure du genre (ce n'est pas
spécifique Spip, plutôt une règle algorithmique) :
<boucle articles>
<boucle focus> avec le filtre id_mot=1
</boucle focus>
<boucle pas focus> avec le filtre id_mot !=1
</boucle pas focus>
</boucle articles>
Parce que dans ta strucutre actuelle, une fois affiché les articles focus,
tu listes tout le monde.

Je ne suis as s$ir d'avoir compris ton pb, parce je ne vois pas le rapport
avec la pagination. Mais je ne suis pas trop fortiche en Spip.
Didier.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Crazyspip

Bonjour Didier,

Mrci pour ta réponse.
La 2e boucle ne liste pas tout, grâce à doublons. Sans pagination, ça
fonctionne très bien, c'est lorsque l'on ajoute la pagination que ça
part en vrille. :slight_smile:

Le 4 décembre 2016 à 11:08, Didier <d.berland@orange.fr> a écrit :

Le 04/12/2016 à 01:13, Crazy Spip a écrit :

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

Bjr.
Peut-être faut-il mettre en place une structure du genre (ce n'est pas
spécifique Spip, plutôt une règle algorithmique) :
<boucle articles>
<boucle focus> avec le filtre id_mot=1
</boucle focus>
<boucle pas focus> avec le filtre id_mot !=1
</boucle pas focus>
</boucle articles>
Parce que dans ta strucutre actuelle, une fois affiché les articles focus,
tu listes tout le monde.

Je ne suis as s$ir d'avoir compris ton pb, parce je ne vois pas le rapport
avec la pagination. Mais je ne suis pas trop fortiche en Spip.
Didier.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Crazyspip

Bonjour Maïeul,

Les boucles se sont retrouvées imbriquées au fil de mes (nombreux !)
essais infructueux. Au départ elles ne l'étaient pas.
Tu as bien compris le besoin. Je vais essayer ta solution et, si elle
fonctionne, essayer de comprendre sa logique pour pouvoir la
reproduire dans le futur.
Je vous tiens au courant. Merci !!

Le 4 décembre 2016 à 10:55, Maïeul <maieul@maieul.net> a écrit :

Le 04.12.16 à 01:13, Crazy Spip a écrit :

Bonsoir à tous,

Bon... soit je ne "spip" pas assez souvent, soit ce que je souhaite
faire est plus compliqué qu'il n'y paraît.

Je réalise un site de type blog, qui contient plusieurs rubriques.
Dans chaque rubrique, je liste les articles de la rubrique très
classiquement {par date}{inverse}.
Par contre, en haut de liste, je mets un ou deux articles importants
en focus, peu importe leur date, grâce à un mot-clé.

Là où ça se complique, c'est de combiner cela avec une pagination.
Comme {doublons} ne fonctionne pas d'une page à l'autre, je me
retrouve avec mes articles "focus" sur les pages 2, 3, 4 ... alors que
bien entendu, l'objectif est qu'ils ne soient visibles que sur la
première.

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

avec un tel système imbriqué, je vois pas comment tu pouvais esperer t'en
sortir.

Ton problème si je comprend bien est d'avoir
1) d'abord tes articles epinglés
2) puis les autres articles triés par date inverse
3) le tout pagine de sorte à n'avoir que 10 articles à la fois

le problème est dans le melange de 2 types de tri pour une seule boucle
paginé. La solution que je vois est de remplir un tableau avec les
{id_article} dans l'ordre qui t'intéresse, sans te soucier de la pagination,
puis de boucler sur le résultat de ce tableau. C'est pas optimal si tu as
beaucoup d'article, mais avec peu d'article ca joue.

#SET{articles,#LISTE}
<BOUCLE_epingles(ARTICLES){id_mot=1}{id_rubrique}{doublons epingles}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_epingles>
<BOUCLE_normal(ARTICLES){doublons epingles}{id_rubrique}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_normal>
<BOUCLE_affichage(ARTICLES){pagination 10}{id_article IN #GET{articles}}>
BALISE pour afficher l'article
</BOUCLE_affichage>
#PAGINATION
</B_affichage>
--
Maïeul
http://blog.maieul.net
http://geekographie.maieul.net

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Crazyspip

Bonjour,

La solution donnée par Maïeul semble parfaitement fonctionner. Merci !!

Je dis "semble" parce que les boutons d'admin (dont le "recalculer la
page") ne sont pas visibles, ce qui rend le contrôle assez pénible et
hasardeux dans le cas d'une pagination. Au passage, si quelqu'un a
déjà eu le problème...

Cookie de corespondance désactivé et réactivé, rien n'y fait. Et ces
boutons sont quelque part (car visibles dans le code source)... Ils
doivent avoir "glissé" sous le design mais je me vois mal jouer du
z-index, sachant que ça m'obligerait à positionner tous les éléments.

Quelqu'un a déjà eu ce souci ? On en sort comment ?

Bonne journée à tout le monde !

Le 4 décembre 2016 à 13:04, Crazy Spip <crazyspip@gmail.com> a écrit :

Bonjour Maïeul,

Les boucles se sont retrouvées imbriquées au fil de mes (nombreux !)
essais infructueux. Au départ elles ne l'étaient pas.
Tu as bien compris le besoin. Je vais essayer ta solution et, si elle
fonctionne, essayer de comprendre sa logique pour pouvoir la
reproduire dans le futur.
Je vous tiens au courant. Merci !!

Le 4 décembre 2016 à 10:55, Maïeul <maieul@maieul.net> a écrit :

Le 04.12.16 à 01:13, Crazy Spip a écrit :

Bonsoir à tous,

Bon... soit je ne "spip" pas assez souvent, soit ce que je souhaite
faire est plus compliqué qu'il n'y paraît.

Je réalise un site de type blog, qui contient plusieurs rubriques.
Dans chaque rubrique, je liste les articles de la rubrique très
classiquement {par date}{inverse}.
Par contre, en haut de liste, je mets un ou deux articles importants
en focus, peu importe leur date, grâce à un mot-clé.

Là où ça se complique, c'est de combiner cela avec une pagination.
Comme {doublons} ne fonctionne pas d'une page à l'autre, je me
retrouve avec mes articles "focus" sur les pages 2, 3, 4 ... alors que
bien entendu, l'objectif est qu'ils ne soient visibles que sur la
première.

Voici mes boucles (dans leur état actuel, mais j'ai tenté de multiples
combinaisons avec ma boucle "focus-rub" à l'intérieur de l'autre ou
non).

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

     <BOUCLE_focus-rub(MOTS)>
     <BOUCLE_articles-focus(ARTICLES) {id_mot=1} {par date} {inverse}
{doublons rub}>

          Mes balises qui vont bien pour les articles en focus

     </BOUCLE_articles-focus>
     </BOUCLE_focus-rub>

Mes balises qui vont bien pour les autres articles

</BOUCLE_articles>
#PAGINATION{precedent_suivant}
</B_articles>

Qui peut m'aider ? (spip 3.1)

avec un tel système imbriqué, je vois pas comment tu pouvais esperer t'en
sortir.

Ton problème si je comprend bien est d'avoir
1) d'abord tes articles epinglés
2) puis les autres articles triés par date inverse
3) le tout pagine de sorte à n'avoir que 10 articles à la fois

le problème est dans le melange de 2 types de tri pour une seule boucle
paginé. La solution que je vois est de remplir un tableau avec les
{id_article} dans l'ordre qui t'intéresse, sans te soucier de la pagination,
puis de boucler sur le résultat de ce tableau. C'est pas optimal si tu as
beaucoup d'article, mais avec peu d'article ca joue.

#SET{articles,#LISTE}
<BOUCLE_epingles(ARTICLES){id_mot=1}{id_rubrique}{doublons epingles}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_epingles>
<BOUCLE_normal(ARTICLES){doublons epingles}{id_rubrique}>
#SET{articles,#GET{articles}|push{#ID_ARTICLE}}
</BOUCLE_normal>
<BOUCLE_affichage(ARTICLES){pagination 10}{id_article IN #GET{articles}}>
BALISE pour afficher l'article
</BOUCLE_affichage>
#PAGINATION
</B_affichage>
--
Maïeul
http://blog.maieul.net
http://geekographie.maieul.net

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Crazyspip

--
Crazyspip

Le 04/12/2016 à 12:58, Crazy Spip a écrit :

Bonjour Didier,

Mrci pour ta réponse.
La 2e boucle ne liste pas tout, grâce à doublons. Sans pagination, ça
fonctionne très bien, c'est lorsque l'on ajoute la pagination que ça
part en vrille. :slight_smile:

si ça vrille comme ça, c'est à mon avis soit parce que ta 2eme boucle
inclue la première, soit peut être parce que tu n'inclues pas la 2eme boucle
dans un div ajax, si bien que c'est toute la page qui est rechargée ?
JL