Esempio
Nella sua forma più semplice, questo sistema è composto da un criterio e da un segnaposto:
- il criterio
{pagination}
va aggiunto al ciclo da impaginare; - il segnaposto
#PAGINATION
va messo in una delle parti opzionali del ciclo («prima» o «dopo»).
<B_pagina>
#PAGINATION
<ul>
<BOUCLE_pagina(ARTICLES) {par date} {pagination}>
<li>#TITRE</li>
</BOUCLE_pagina>
</ul>
</B_pagina>
Se il sito ha 90 articoli pubblicati questo ciclo mostrerà l’elenco dei dieci articoli più vecchi, sovrastata di link che portano verso la pagina che mostra i dieci seguenti, i dieci precedenti, ecc. Questi link sono numerati nella maniera seguente:
Il numero dal quale si inizia a mostrare i risultati viene passato nell’URL mediante un parametro debut_page=x che ha lo stesso nome (in questo caso, «pagina») del ciclo in questione. (Questo parametro può essere utilizzato in un altro ciclo attraverso il criterio classico {debut_page,10}
.)
Da notare: il numero totale di link mostrati è limitato; dei punti di sospensione permettono di andare direttamente alla fine dell’elenco o di tornare all’inizio dell’elenco se lo si desidera.
Ancore di paginazione
Il segnaposto #PAGINATION
comporta un’ancoraggio HTML che permette a chi naviga di mostrare direttamente la parte della pagina che è impaginata; tuttavia, se si desidera mettere dei link di paginazione sotto l’elenco degli articoli si deve poter mettere l’ancora al di sopra dell’elenco.
Per questo scopo è utile il segnaposto #ANCRE_PAGINATION
, che ritorna l’ancora in questione, e impedisce al segnaposto #PAGINATION
che segue di visualizzare il suo ancoraggio.
<B_pagina>
#ANCRE_PAGINATION
<ul>
<BOUCLE_pagina(ARTICLES) {par date} {pagination}>
<li>#TITRE</li>
</BOUCLE_pagina>
</ul>
#PAGINATION
</B_pagina>
Il numero totale dei risultati
Per un ciclo con il criterio {pagination}
, il segnaposto #TOTAL_BOUCLE
mostra il numero di elementi effettivamente trovati, ovvero 10 sulle pagine piene e 10 o meno sull’ultima pagina dei risultati.
Per visualizzare il numero di elementi che dovrebbero essere trovati se il criterio {pagination}
non era presente, si utilizza il segnaposto #GRAND_TOTAL
.
<B_paginazione>
#ANCRE_PAGINATION
<BOUCLE_paginazione (ARTICLES) {pagination}>
#TITRE <br />
</BOUCLE_paginazione>
In totale vi sono #GRAND_TOTAL articoli, e questa pagina ne mostra #TOTAL_BOUCLE
</B_paginazione>
farà visualizzare la frase: « In totale vi sono 1578 articoli, e questa pagina ne mostra 10. »
Cambiare l’intervallo del criterio {pagination}
Il numero predefinito di 10 elementi per pagina può essere modificato con un parametro supplementare del criterio.
Quindi:
<BOUCLE_pagina (ARTICLES) {pagination 5}>
#TITRE <br />
</BOUCLE_pagina>
darà i titoli di cinque articoli a partire da debut_page.
Il parametro in questione può essere composto secondo i propri desideri, ottenendolo anche da altri segnaposti, in particolare con #ENV{xx}
, il che permette di ottenere una visualizzazione personalizzata molto completa.
La paginazione nei modelli inclusi
Se la propria paginazione deve funzionare in un modello di layout incluso si è obbligati a passare come parametro del comando INCLUDE
la formula {self=#SELF}
; ciò permette al modello incluso di calcolarsi il valore corretto del parametro debut_xxx, e si giustifica anche in quanto è più sicuro (il segnaposto #PAGINATION viene in effetti calcolato partendo dall’URL completo della pagina).
Stili della paginazione
Nell’elenco delle pagine, SPIP applica la classe « .on » alla pagina attuale e non mette nessuno stile sui link verso le altre pagine. La classe « .on » è la stessa del segnaposto #EXPOSE; generalmente essa mette in grassetto l’elemento a cui si applica.
Scegliere il modulo di paginazione
Dalla versione SPIP 1.9.1, il segnaposto #PAGINATION accetta un parametro {modele}
, che consente di modificare il risultato del segnaposto.
Quindi #PAGINATION{precedent_suivant}
mostrerà i collegamenti verso le pagine precedente e successiva. I collegamenti saranno i seguenti
#PAGINATION{page}
mosterà quanche cosa del tipo
#PAGINATION{page_precedent_suivant}
mostrerà qualcosa come
E’ possibile definire altri moduli di paginazione, che dovranno chiamarsi pagination_modele. Per ulteriori informazioni leggere la documentatione su i moduli.