Présentation
Ce filtre reprend les méthodes de calcul qui permettent de générer des listes de pages s’appuyant sur le très pratique critère {debut_xxx, yyy}
qu’on retrouve un peu partout.
Rien de nouveau donc, si ce n’est qu’il apporte l’avantage de faire disparaître le code PHP des squelettes et mutualise cette fonctionalité pour un site entier.
Utilisation de base
Ce filtre s’applique à la balise #TOTAL_BOUCLE. les deux premiers paramètres sont obligatoires pour assurer le bon fonctionnement du filtre. L’exemple suivant liste les 10 derniers articles d’une rubrique et donc, les pages correspondantes :
<BOUCLE_articles_pagination(ARTICLES){id_rubrique}{par date}{inverse}>
</BOUCLE_articles_pagination>
[(#TOTAL_BOUCLE|pagination{debut_page,10})]
</B_articles_pagination>
<BOUCLE_article_liste(ARTICLES){id_rubrique}{par date}{inverse}{debut_page,10}>
...Ce qu'on veut...
<a href="#URL_ARTICLE">#TITRE</a>
...Ce qu'on veut...
</BOUCLE_article_liste>
- Résultat :
La boucle articles_pagination va afficher les numéro de pages sous forme de lien, à l’exception de la page courante, séparés par des barres verticales ( |
) :
Utilisations avancées
- Cosmétique
il est possible de définir 3 paramètres dans ecrire/mes_options.php3
:
— $pagination_item_avant
et $pagination_item_apres
permettent d’encadrer chaque lien par le code html que l’on veut.
Exemple :
$pagination_item_avant = "<big>";
$pagination_item_apres = "</big>";
donne :
— $pagination_separateur
permet de remplacer la barre verticale par le code html que l’on veut.
Exemple :
$pagination_separateur = "<span style='color: Orange;'> :: </span>";
donne :
- Transformation du nombre dans le lien
Vous pouvez préciser le nom d’un filtre dans le squelette lui-même pour transformer le nombre de chaque lien :
Exemple :
[(#TOTAL_BOUCLE|pagination{debut_page,10,chiffres_romains})]
Il convient, bien sur, de disposer d’un tel filtre, soit personnel dans mes_fonctions.php3
, soit d’utiliser un filtre standard de SPIP.
- urls personnalisées :
Pour des manipulations plus complexes, si vous définissez une fonction lien_pagination
, vous disposez d’une plus vaste gamme de création de code html.
Cette fonction supplémentaire (et optionnelle, je le redis) doit être définie de la manière suivante :
function lien_pagination($url, $item, $valeur='')
où $url est l’adresse de base, $item est le nombre qui sera encadré par le lien <a href...>
{{l'item, c'est moi!}}
</a>
que cette fonction va générer. $valeur, la valeur numérique de ce nombre.
Le code à ajouter dans votre fichier mes_fonctions.php3
Note supplémentaire sur l’utilisation de ce filtre
- Il faut 2 boucles. Pour 2 raisons :
— l’habillage, si on souhaite ’paginer’ avant une liste ou ailleurs...
— la technique : on doit avoir un #TOTAL_BOUCLE
réel pour déterminer le nombre de pages. Si ce filtre est appelé dans la même boucle qui sert à générer la liste, on obtient, évidement, toujours un nombre de page égal à 1...
Ces 2 boucles doivent donc être basées sur les mêmes critères, sinon le calcul est faussé. Toutefois le critère {debut_xxx, yyy}
doit être présent dans la définition de la boucle qui liste et absent dans la boucle qui ’pagine’ où on le retrouvera à l’identique dans le filtre.
Vos commentaires
# Le 25 février 2015 à 14:06, par nora
En réponse à : Pagination
slt
j aimerai afficher 15 articles d une rubrique par page sous spip
comment faire ? merci
# Le 25 février 2015 à 14:12, par Maïeul
En réponse à : Pagination
lis la documentation de pagination... je t’ai mis un lien dans le précédent échange
On veut bien aider, mais le minimal est de lire la doc. Or je t’ai envoyé le liens vers la doc.
http://www.spip.net/fr_article3367.html « Changer le pas ».
# Le 25 février 2015 à 14:19, par nora
En réponse à : Pagination
Merci bcp pour ton aide
# Le 25 février 2015 à 12:58, par nora
En réponse à : Pagination
sous spip
pour afficher une liste des 10 prochains articles de ma rubrique mais j’ai un lien de pagination sous chaque article au lieu d’un seul tout en bas de liste
# Le 25 février 2015 à 13:00, par Maïeul
En réponse à : Pagination
rien compris à votre question.
# Le 25 février 2015 à 13:10, par nora
En réponse à : Pagination
je veux faire une boucle de pagination pour afficher les articles d’une rubrique
j ai fais une boucle mais le lien de pagination s affiche apres chaque article d une rubrique
# Le 25 février 2015 à 13:15, par Maïeul
En réponse à : Pagination
bon, deja vous êtes vraiments pas au bon endroit, vu qu’il s’agit d’une archive obsolète, et vous avez vraiment de la chance que je passe par ici par hasard.
Je vous invite
a) à utiliser les outils modernes de SPIP (enfin, ca date de 2005, quand même) : http://www.spip.net/fr_article3367.html
b) à poser votre questions soit sur http://forum.spip.net/ soit sur http://listes.rezo.net/mailman/listinfo/spip/
c) à fournir le code que vous utilisez, sinon on ne pourra pas vous renseigner.
d) à commencer votre message par un mot de politesse et à la finir aussi par un mot de politesse.
# Le 25 février 2015 à 13:33, par nora
En réponse à : Pagination
Désolé ;
tellement je ss stréssée j ai oublier de dire bonjour
je t envois la boucle
merci
# Le 25 février 2015 à 13:34, par Maïeul
En réponse à : Pagination
met la boucle dans le corps de ton message, entouré de la balise
<code>
... je ne travaille pas du code sur copie d’écran...# Le 25 février 2015 à 13:40, par nora
En réponse à : Pagination
ok
Télécharger
# Le 25 février 2015 à 13:47, par Maïeul
En réponse à : Pagination
bon, alors ton
[<p class="pagination">(#PAGINATION)</p>]
est AU SEIN de la BOUCLE. Donc normal qu’à chaque itération de la boucle (c’est à dire à chaque article) il soit affiché.Sort le de ta boucle en le mettant dans la partie optionnel, et cela suffit
Télécharger
Autre points
-
divclass
-> coquille, il manque un espace-
|supprimer_numero
est automatiquement appliqué depuis SPIP 3. Désormais inutile.-
||
pour un filtre d’image ne sert plus depuis SPIP3.# Le 25 février 2015 à 13:55, par nora
En réponse à : Pagination
ah Merci bcp ça marche tres bien
je te remercie
# Le 9 avril 2008 à 18:45, par emic78
En réponse à : Pagination
Salut,
j’ai crée un menu déroulant avec des mots clés chacun renvoyant sur un ou plusieurs articles, ceci afin de proposer un affichage par catégorie.
Jusqu’ici tout va bien !
Avec un peu de php cela donne :
<?php
$titreMot='[(#ENV{titre_mot})]';
if($titreMot!=''){
?>
<BOUCLE_articles_tri(ARTICLES) {id_rubrique} {titre_mot=#ENV{titre_mot}} {!par num titre}>
<li>
<h3 class="titre"><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></h3>
</li>
</BOUCLE_articles_tri>
<?
}else{
?>
<BOUCLE_articles(ARTICLES) {id_rubrique} {!par num titre} {pagination}>
<li>
<h3 class="titre"><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></h3>
</li>
</BOUCLE_articles>
<?php
}
?>
<//B_articles>
</ul>
</div>[<p class="pagination">(#PAGINATION)</p>]
</B_articles>
Le probleme est que la pagination ne tient pas compte du nombre d’article liés au mot clé mais prend toujours le nombre total d’article contenu dans la rubrique consultée.
Ce qui fait que je me retrouve avec 7-8 pages de consultation, alors que j’ai seulement 2 articles correspondant à la catégorie.
Ma méthode est-elle la bonne ?
# Le 10 avril 2008 à 08:45, par ?
En réponse à : Pagination
manifestement non, ce n’est pas la bonne méthode. :)
ça dépend des critères de la boucle. Quelle version de SPIP utilises-tu ?
# Le 10 avril 2008 à 10:00, par emic78
En réponse à : Pagination
J’utilise la version 1.9.2.
la boucle idéale serait :
je prend tous les résultats si je fais une recherche sur tous le groupe de mot ou seulement les articles liés au mot clé contenu dans le groupe de mot.
tous cela cela à partir d’un menu déroulant.
mon seul souci dc’est vraiment la pagination actuellement.
# Le 10 avril 2008 à 10:31, par emic78
En réponse à : Pagination
Finalement je suis allé au plus simple :
j’ai refais deux boucles complètes avec une condition PHP et ça fonctionne.
ça alourdit le code mais j’arrive à ce que je voulais sans problème
Merci pour ton aide.
# Le 13 avril 2008 à 10:12, par ?
En réponse à : Pagination
En 1.9.2, cette contribution n’est plus utile : voir plutôt Le système de pagination
# Le 17 octobre 2006 à 17:02, par shu
En réponse à : Pagination
Bonjour je réalise un site en spip et j’ai un petit problème, je cherche un système de pagination d’article. Lorque celui ci est trop grand je voudrais qu’il soit divisé automatiquement en plusieur pages...
# Le 13 mai 2006 à 19:42, par Phil
En réponse à : Pagination
Est-ce que ça marche aussi avec la version 1.9 ?
J’ai essayé, et j’obtiens ça (en local) :
Fatal error : Call to a member function on a non-object in z :\www\nouvo\squelettes\mes_fonctions.php on line 36
Je ne suis pas assez expert pour savoir si ça vient d’un soucis de compatibilité avec la nouvelle version 1.9, ou si c’est un probleme lié à la mise a jour de mes squelettes pour la 1.9 (une joyeuse galere, d’ailleurs, ce passage 1.8-1.9...).
# Le 21 mai 2006 à 08:54, par erational
En réponse à : le filtre pagination est compatible avec spip 1.9
oui, le filtre pagination est bien compatible avec la spip 1.9.
pour récuperer la dernière version du filtre, télécharger sa version SVN
# Le 30 juillet 2006 à 23:10, par _Eric_
En réponse à : le filtre pagination est compatible avec spip 1.9
Salut,
Ben non, cette contrib n’est pas compatible avec 1.9. En effet, l’objet clean_link n’est à priori plus utilisé ni déclaré dans la version 1.9. Y a t-il une solution simple pour remplacer les lignes incriminées seules et conserver cette fonction qui marchait en 1.8 ?
Mon but est d’éviter d’utiliser la nouvelle fonction pagination de la 1.9 dans mon ancien squelette fonctionnant sous 1.8 et 1.9. Je modifierai le tout plus tard, en vue de la 2.0.
Merci d’avance
A+
# Le 10 juillet 2006 à 11:57, par takamo
En réponse à : Pagination
bonjour,
je viens de tester ce code et il marche impec ^^
maintenant j’aimerais le modifier pour qu’il passe de « 1 | 2 | 3 » à « 1 | 2 | 3 | >> » avec le « >> » representant la page suivante de celle en cours et idem pour précédent.
J’ai essayé de modifier la fonction pour avoir le résultat voulu mais etant debutant en programmation .... bah ja tout cassé :D
Donc si quelqu’un pouvait me donner un titi coup de main ca ne serait pas de refu ^.^
# Le 27 juin 2006 à 11:00, par Valéry
En réponse à : Pagination
Les contribes qui fonctionnent en deux minutes après un copier/coller et un transfert ftp c’est assez rare et vraiment génial. Merci !
# Le 15 juin 2006 à 22:11, par _Eric_
En réponse à : Pagination
Bonjour,
J’ai mis en oeuvre très facilement cette super contribution en utilisant des critères debut_page, yyy ou yyy est une valeur immédiate (3, 5...) pour lister mes messages de forum.
Ensuite, mon squelette étant paramétrable via des variables globales accessibles dans le code html par une balise #SQUELETTE (cf la contrib de mortimer) j’ai voulu l’utiliser pour remplacer le yyy.
La boucle #TOTAL_BOUCLE fonctionne sans problème car la balise #SQUELETTE(param) est bien évaluée. Par contre, la boucle FORUM pour l’affichage des messages ne marche pas du tout car dans le critère debut_page, #SQUELETTE(param) la balise #SQUELETTE n’est pas évaluée donc l’accès BD plante.
Avez vous une solution pour contourner ce problème ?
D’avance merci.
# Le 20 septembre 2005 à 14:22, par James
En réponse à : > Quelques tests et conclusion sur cette contribution utilisée dans des cas particuliers
Les points les plus problématiques liés à la mise en œuvre de cette contrib sont les suivants :
Après plusieurs essais, bricoles, tentatives de corrections du code de ce filtre et de compréhension des fonctionnalités ci-dessus, j’ai réussi à faire marcher la pagination avec le code tel quel sur une version 1.8.2d (donc, à ce jour, la version stable) :
Cette contrib fonctionne pour les urls standards, html, propres et « propres2 » de SPIP, sans soucis.
Concernant les inclusions de squelettes contenant le filtre, c’est plus délicat, mais en ajoutant le paramètre suivant dans la balise d’inclusion, le problème de cache est reglé (plus besoin de définir le delais à 0)
{var_pagination=#ENV{debut_xxx}}
ou var_pagination est un code ’bidon’ pour différencier le contexte et ainsi calculer une page différente selon la valeur de debut_xxx (celui-ci dépendant de ce que vous aurez choisi comme nom, dans la contrib : debut_page)Alternativement, delais=0 en paramètre d’
<INCLURE()>
ne multiplie pas les fichiers de cache générés... c’est un choix à faire en fonction de votre plate-forme.Au plaisir :)
# Le 13 octobre 2005 à 10:36, par arnold-layne
En réponse à : > Quelques tests et conclusion sur cette contribution utilisée dans des cas particuliers
Bonjour
Ca m’intéresse cette solution pour faire fonctionner les urls réécrites... j’avoue que la je suis paumé... je n’ai pas la 1.8.2 mais la 1.8.1... faut il faire une mise ajour ? comment ?
meric de me répondre je ne sais plus ou chercher...
Arnold
# Le 13 octobre 2005 à 10:48, par James
En réponse à : HS : Mise à jour et url réécrites
Bon, c’est un peu hors sujet comme demande :
Utiliser des URLs personnalisées
Oui, c’est toujours une option à privilégier sans en faire une doctrine ;-)
Effectuer une mise à jour
Bonne continuation :)
# Le 18 octobre 2005 à 16:47, par ?
En réponse à : HS : Mise à jour et url réécrites
en fait c’est pas hors sujet... j’avais déja un systeme de pagination, mais quand j’ai voulu mettre en place les urls réécrite, ça buggait avec le systeme de pagination... DOnc comme tu paralis de compatibilité avec les urls réécrites...
mais la ça y est c bon, je suis pasé en 1.8.2 et ça marche au poil.
merci qd mm...
Arnold
# Le 12 avril 2006 à 13:13, par SPQR
En réponse à : > Quelques tests et conclusion sur cette contribution utilisée dans des cas particuliers
Depuis que je suis passé en 1.8.2 le lien pagination n’est plus « rafraîchi » : en clair si je clique sur page 2, elle s’affiche bien mais c’est la 1 qui appraît comme étant sélectionnée.
Comme j’utilise la pagination via un inclure de squelette « pied de page », j’ai essayé avec var_pagination=#ENVdebut_page mais cela ne change rien. Le seul truc qui marche c’est le recalcul...
Quelqu’un a une idée ? D’avance merci.
# Le 15 juin 2006 à 17:10, par Rainer Müller
En réponse à : > Quelques tests et conclusion sur cette contribution utilisée dans des cas particuliers
J’ai le même problème avec la version 1.8.3
# Le 5 juin 2006 à 23:21, par Fil
En réponse à : Pagination dans la version 1.9
Signalons que la version 1.9 de SPIP comportera une fonction pagination native (qui est basée sur celle présentée sur cette contrib).
# Le 10 juin 2006 à 12:16, par Benjamin Farrudja
En réponse à : Pagination dans la version 1.9
Salut,
Cette contribution est pratique est c’est logique qu’elle soit intégrée à SPIP à mon avis...
J’ai la BETA 2, ça ne marche pas tout seul encore, où faut-il que j’ajoute les fichiers http://zone.spip.org/trac/spip-zone/browser/_contribs_/_filtres_/pagination ???
Merci