Bonjour à tous,

Je suis à la recherche d'informations concernant une fonctionnalité que vous devez tous connaitre :
Sur Facebook, la pagination n'existe pas. Pour voir plus de posts, on scroll vers le bas, et automatiquement on accede aux pots plus anciens.
Connaitriez un plugin jquery pour reproduire cet effet ?
Faut il forcement passé par de l'ajax ?
Ne peut on pas faire quelque chose dans le genre :

[SELECTIONNER TOUS LES POSTS]
[AFFICHER DE 0 A 10]
[SI POSITION DU DOCUMENT == BAS DE PAGE]
[AFFICHER 10-20]
et ainsi de suite ...
Vous excuserez ma pauvre écriture algorithmique =D

Cordialement, Benjamin D

2 réponses


Slt,

Je te conseille de regerder du côté du scroll infini (ou infinite scroll) sur ton ami Google. Tu devrais trouver des plugins qui répondent à ton besoin.

Remarque : pour optimiser les performances de ton site, le passage par de l'AJAX te permettra de charger rapidement la page "accueil" car peu de contenu et en fonction du souhait de l'internaute à scoller ou page tu chargeras davantage de contenus.

Bon code !

Le principe de Google ou Twitter est basé sur un système de pagination en réalité. Voici ce qu'il se passe :

  • l'utilisateur charge la page d'accueil grâce à une action avec un index de page = 1
  • Il va pouvoir voir dans un premier temps les 20 (ceci est un exemple) premiers posts d'un seul coup.
  • Une fois qu'il arrive en bas de page, le site va faire un appel AJAX à la MÊME action que la page d'accueil mais avec un index de page qui s'incrémente (2 puis 3, 4, ...).
  • Le site va donc récupérer les 20 prochaines posts et va donc pouvoir les ajouter à la suite.

Pour faire ça proprement, il suffit donc de gérer ce système de pagination dans ton action. Ensuite tu fais un simple appel AJAX avec une requête GET ( http://api.jquery.com/jQuery.get/ si tu utilises jQuery). Il te suffira de récupérer le résultat et de l'ajouter dans ton DOM.

Le problème de charger tous les posts est au niveau de la performance. Si tu as plusieurs centaines de posts, tu vas tous les charger alors qu'il y a une probabilité très faible pour que l'utilisateur ne dépasse pas les 30 posts (c'est une valeur d'exemple). Donc tu auras chargé 70 posts pour rien. Hors 70 posts c'est énorme, cela signifie 70 images, titres, contenus, ... . A ce temps de chargement, tu vas devoir ajouter celui d’exécution de ton script JS qui va devoir faire une boucle pour les cacher.
Au final, ton utilisateur se retrouvera avec une page qui mettra plusieurs secondes à charger et qui va avoir une ergonomie étrange car les posts s'afficheront puis se cacheront avant de se réafficher si il descend plus bas dans la page.