Bonjour,
Sur spip 2.09, j'utilise la pagination sur des boucles documents. J'ai donc dans ma page article.html, un inclure avec un critère ajax.
Dans ma page document incluse, je boucle donc sur les documents avec notamment des critères {par #ENV{tri}}{pagination #ENV{p,50}}
ainsi: [<a href="(#SELF|parametre_url{'p','25'})" class="ajax[ on(#ENV{p}|=={25}|?{' ',''})]">25</a>] me permet de définir le nombre de documents à afficher (ici 25), grâce à un lien.
J'utilise également la pagination page_precedent_suivant sans problème: tout s'actualise sans problème.
C'est en voulant modifier le modèle de pagination pour faire un modèle avec un menu select (d'ou le titre) que je bloque! L'idée était de garder la flèche précédent et la flèche suivant, mais de remplacer tous les liens (1 | 2 | 3 etc.) par un select/option. J'ai donc fait ceci:
dans la boucle documents, j'appelle mon modèle:
[<span class="pagination">(#PAGINATION{page_pagination_select})</span>]
dans mon modèle pagination_select.html, je reprends la structure globale avec quelques modifs:
#SET{i,#ENV{page_courante}|moins{1}}
[(#GET{i}|>{0}|?{' ',''})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{bouts='bout'}{texte='<'}{separateur=#GET*{separateur}}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
]
<form name="selectpagine" method="get" class="ajax"><select class="selectpagine ajax" onchange="document.forms['selectpagine'].submit();" >
#SET{i,#GET{premiere}}
[(#GET{i}|<={#GET{derniere}}|?{' ',''})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][(#INCLURE{fond=modeles/paginationselect}{num=#GET{i}}{texte=#GET{i}}{separateur=#GET*{separateur}}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#GET{derniere}})]
]
#SET{i,#GET{i}|plus{1}}
[(#GET{i}|<={#GET{derniere}}|?{' ',''})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][(#INCLURE{fond=modeles/paginationselect}{num=#GET{i}}{texte=#GET{i}}{separateur=#GET*{separateur}}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#GET{derniere}})]
]
etc... puis:
</select><noscript><input type="submit" value="ok" /></noscript>
</form>
#SET{i,#ENV{page_courante}|plus{1}}
[(#GET{i}|<{#ENV{nombre_pages}}|?{' ',''})[
(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
][#GET*{separateur} (#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{bouts='bout'}{texte='>'}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
]
et j'ai remplacé la page paginationitem par pagination select:
[(#ENV{num}|=={#ENV{page_courante}}|?{' ',''})
[<option value='#ENV{url}' class="ajax" selected="selected">(#ENV*{texte})</option>]
][(#ENV{num}|=={#ENV{page_courante}}|?{'',' '})
[<option value='#ENV{url}' class="ajax">(#ENV*{texte})</option>]
][(#ENV{num}|<{#ENV{derniere}}|?{#ENV*{separateur},''})]
RESULTAT:
les flèches précédent suivant fonctionnent parfaitement en ajax, mais mon menu select me recharge toute la page... Du coup je ne sait pas ou mettre la class=ajax (je l'ai mise partout sans succès). Peut être faut il mettre un critère supplémentaire dans l'appel inclure.
J'ai vu sur spip-contrib une solution pour faire exactement ce type de pagination, mais il s'agit d'une bidouille en php, et je préfère de loin une solution tout spip. J'imagine que c'est faisable, mais je bloque.
Auriez vous une piste?