Bonjour,
Est-ce que c'est possible de faire des boutons "<<" ">>"
pour naviguer d'un article au précédent ou suivant dans la même rubrique,
et ce sans utiliser de php ?
JL
Bonjour,
Est-ce que c'est possible de faire des boutons "<<" ">>"
pour naviguer d'un article au précédent ou suivant dans la même rubrique,
et ce sans utiliser de php ?
JL
La documentation de SPIP est ton amie (pagination)
Choisir le modèle de pagination
Depuis SPIP 1.9.1, la balise #PAGINATION accepte un paramètre {modele},
qui permet de modifier le résultat de la balise.
Ainsi #PAGINATION{precedent_suivant} affichera des liens vers les pages
précédentes et suivantes. Les liens seront les suivants
page précédente | page suivante
#PAGINATION{page} affichera quelque chose de la forme suivante
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
#PAGINATION{page_precedent_suivant} affichera quelquechose comme
< 1 | 2 | 3 | 4 | 5 | 6 | >
Il est possible de définir d’autres modèles de pagination, qui devront s’appeler
pagination_modele. Pour plus d’info, lire la documentation sur les modèles.
JLuc a écrit :
Bonjour,
Pareil,
Est-ce que c'est possible de faire des boutons "<<" ">>"
pour naviguer d'un article au précédent ou suivant dans la même rubrique,
et ce sans utiliser de php ?
Lignes 20 à 25.
-- Franck
Franck Ducas wrote:
Est-ce que c'est possible de faire des boutons "<<" ">>"
pour naviguer d'un article au précédent ou suivant dans la même rubrique,
et ce sans utiliser de php ?Connexion · GitLab
Lignes 20 à 25.
très bien !
{age_relatif>0}{!par date}{0,1} pour le précédent.
et {age_relatif<0}{par date}{0,1} pour le suivant...
je pense que ça va faire l'affaire !
JLuc
JLuc wrote:
Franck Ducas wrote:
Connexion · GitLab
Lignes 20 à 25.
Bizarrement ça ne donne pas les bons résultats.
Les 2 insertions suivantes sont à la suites et ne donnent pas les mêmes résultats...
Il y a une quinzaine de pages dans la rubrique.
ça coïncide pour la moitié, mais les liens suivants s'arrêtent à la moitié !!
Je me demande si ça vient pas des doublons mais je vois pas...
(pas de pb avec la solution "avec php")
C'est à l'intérieur d'une <BOUCLE_article_principal(ARTICLES){id_article}{doublons}>
1) comme fait dans le lien plus haut
<BOUCLE_precedent(ARTICLES){id_rubrique}{age_relatif>0}{!par date}{0,1}{doublons}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
précédent</a>
</BOUCLE_precedent>
<BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif<0}{par date}{0,1}{doublons}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
suivant</a>
</BOUCLE_suivant>
<br>
2) avec du php
<?php $lien_prec = $lien_suiv = ''; ?>
<BOUCLE_avant(ARTICLES){id_rubrique}{par date}>
<?php
if (#_article_principal:ID_ARTICLE==#ID_ARTICLE)
echo $lien_prec;
$lien_prec = "<a href='#URL_ARTICLE'[ title='(#TITRE|couper{80}|nobullshit)']>précédent</a>"
?>
</BOUCLE_avant>
<BOUCLE_apres(ARTICLES){id_rubrique}{par date}{inverse}>
<?php
if (#_article_principal:ID_ARTICLE==#ID_ARTICLE)
echo $lien_suiv;
$lien_suiv = "<a href=\"#URL_ARTICLE\" [ title='(#TITRE|couper{80}|nobullshit)']>suivant</a>";
?>
</BOUCLE_apres>
Vous voyez comment se fait-ce ?
JLuc
Il y a la boucle que tu cherches ici : La gestion des dates - SPIP.
La différence vient d'une possibilité d'avoir 2 articles à la même date. D'où les critères {age_relatif<=0}{!par date}{1,1}.
Evidemment peut-être que les doublons introduisent une exclusion. Ce qui risque de bloquer la chaîne des liens précédents ou suivants.
BMR
JLuc a écrit :
JLuc wrote:
Franck Ducas wrote:
Connexion · GitLab
Lignes 20 à 25.Bizarrement ça ne donne pas les bons résultats.
Les 2 insertions suivantes sont à la suites et ne donnent pas les mêmes résultats...
Il y a une quinzaine de pages dans la rubrique.
ça coïncide pour la moitié, mais les liens suivants s'arrêtent à la moitié !!
Je me demande si ça vient pas des doublons mais je vois pas...
(pas de pb avec la solution "avec php")C'est à l'intérieur d'une <BOUCLE_article_principal(ARTICLES){id_article}{doublons}>
1) comme fait dans le lien plus haut
<BOUCLE_precedent(ARTICLES){id_rubrique}{age_relatif>0}{!par date}{0,1}{doublons}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
précédent</a>
</BOUCLE_precedent>
<BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif<0}{par date}{0,1}{doublons}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
suivant</a>
</BOUCLE_suivant>
<br>2) avec du php
<?php $lien_prec = $lien_suiv = ''; ?>
<BOUCLE_avant(ARTICLES){id_rubrique}{par date}>
<?php
if (#_article_principal:ID_ARTICLE==#ID_ARTICLE)
echo $lien_prec;
$lien_prec = "<a href='#URL_ARTICLE'[ title='(#TITRE|couper{80}|nobullshit)']>précédent</a>"
?>
</BOUCLE_avant>
<BOUCLE_apres(ARTICLES){id_rubrique}{par date}{inverse}>
<?php
if (#_article_principal:ID_ARTICLE==#ID_ARTICLE)
echo $lien_suiv;
$lien_suiv = "<a href=\"#URL_ARTICLE\" [ title='(#TITRE|couper{80}|nobullshit)']>suivant</a>";
?>
</BOUCLE_apres>Vous voyez comment se fait-ce ?
JLuc
BMR wrote:
Il y a la boucle que tu cherches ici : La gestion des dates - SPIP.
Ici j'ai jamais 2 articles à la même date
(de toute façon la date n'inclure t elle pas les secondes ?)
J'ai réussi à partir de l'exemple de la doc,
mais en corrigeant la première boucle
car le résultat doit être :
<BOUCLE_precedent(ARTICLES){id_rubrique}{age_relatif>0}{!par date}{0,1}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
précédent</a>
</BOUCLE_precedent>
<BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif<0}{par date}{0,1}>
<a href='#URL_ARTICLE' [ title='(#TITRE|couper{80}|nobullshit)']>
suivant</a>
</BOUCLE_suivant>
(l'exemple de la doc exclut le premier résultat mais puisque age_relatif > 0 strict,
il ne faut pas !!)
JLuc
Manu Guillemont wrote:
La documentation de SPIP est ton amie (pagination)
J'ai essayé mais ce n'est pas possible ici d'utiliser la pagination
car "la balise #PAGINATION, placée dans une des parties optionnelles
(« avant » ou « après ») de la boucle, affiche la « pagination »."
Or c'est au coeur de #navigation,
en plein milieu de la page
et donc de la boucle
et non dans une partie optionnelle...
JLuc
Selon JLuc <jluc@no-log.org>:
BMR wrote:
> Il y a la boucle que tu cherches ici :
> La gestion des dates - SPIP.
Tu peux essayer ça aussi, qui semble avoir été réparé dans la dernière version
SVN :
-- Franck
franck.ducas@free.fr wrote:
Selon JLuc <jluc@no-log.org>:
BMR wrote:
Il y a la boucle que tu cherches ici :
La gestion des dates - SPIP.Tu peux essayer ça aussi, qui semble avoir été réparé
D'après la doc, la pagination n'est accessible
que dans les parties conditionnelles d'une boucle, non ?
Ou dans un inclure c'est possible au coeur de la boucle ?
JLuc
JLuc a écrit :
franck.ducas@free.fr wrote:
Selon JLuc <jluc@no-log.org>:
BMR wrote:
Il y a la boucle que tu cherches ici :
La gestion des dates - SPIP.Tu peux essayer ça aussi, qui semble avoir été réparé
D'après la doc, la pagination n'est accessible
que dans les parties conditionnelles d'une boucle, non ?
Ou dans un inclure c'est possible au coeur de la boucle ?JLuc
je ne sais pas si ça répond à ton problème,
j'ai fait un modèle (pas encore en ligne) qui propose
< 5/10 20 > si ça peut t'aider le voici
j'ai crée 2 modeles de pagination copié sur les originaux
modeles/pagination_walma.html
en voici le code
/////////////////////////////
#ENV*{bloc_ancre}
#SET{bornes,#ENV{page_courante}|calcul_bornes_pagination{#ENV{nombre_pages},10}}
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{separateur,''}
#SET{i,#ENV{page_courante}|moins{1}}
[(#GET{i}|>{0}|?{' ',' '})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][(#INCLURE{fond=modeles/paginationitemw}{num=#GET{i}}{texte=<span id="back"><</span>}{url=#ENV{url}|parametre_url{grande,''}|parametre_url{#ENV{debut},#ENV{page_courante}|=={#GET{premiere}}|?{#GET{derniere}|moins{1}|mult{#ENV{pas}},#GET{item}}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
#SET{i,#GET{i}|plus{2}}
[(#GET{i}|<{#ENV{nombre_pages}}|?{' ',''})]
]
[(#SET{i,#ENV{page_courante}|plus{1}})]
[(#GET{i}|<={#ENV{nombre_pages}}|?{' ',' '})
[(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })]
[(#INCLURE{fond=modeles/paginationitemw}{num=#GET{i}}{texte=<span id="go">></span>}{url=#ENV{url}|parametre_url{grande,''}|parametre_url{#ENV{debut},#ENV{page_courante}|=={#GET{derniere}}|?{'',#GET{item}}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
]
[<!--(#REM) numérotation au centre du compteur -->]
<a id="compteurcentreref" href="[(#SELF|parametre_url{id_document,''}|parametre_url{#ENV{debut},''}|parametre_url{grande,''}|parametre_url{pas,''}|parametre_url{recherche,#RECHERCHE})]#bloc0">
[
[(#ENV{page_courante}|=={1}|?{#ENV{page_courante},[(#EVAL{[(#GET{item})]-[(#ENV{pas})]+1})]})]-[(#GET{item}|>={[(#TOTAL)]}|?{[(#TOTAL)],[(#GET{item})]})]
] / #TOTAL
</a>
/////////////////////////////
et dans modeles/paginationitemw.html
j'ai
/////////////////////////////
[(#ENV{num}|=={#ENV{page_courante}}|?{'',' '})
[<a href='#ENV{url}'>(#ENV*{texte})</a>]
]
/////////////////////////////
Puis je l'appelle dans une boucle d'un squelette
<B_maboucle>
[(#PAGINATION{walma})]
<BOUCLE_maboucle(ARTICLES){pagination #ENV{pagine,5}}>
A tester donc!
++
touti
Merci pour vos réponses.
J'explorais aussi pagination mais la réponse inspirée de la doc va très bien.
J'espère que ce sera utile à d'autres.
JLuc
toutati wrote:
j'ai fait un modèle (pas encore en ligne) qui propose
< 5/10 20 > si ça peut t'aider le voici