Pagination Bis

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cet article permet de réaliser une pagination simple suivant un modèle existant

Tout d’abord merci aux administrateurs de Spip-Contrib qui m’ont orienté.

Intérêt du code

Le but ce micro squelette est de créer dans une rubrique qui contient beaucoup d’articles une pagination, selon que l’on souhaite afficher X articles par page et d’offrir au visiteur un moyen de passer de page en page facilement.
Un autre exemple existe sur Spip-Contrib Pagination

Démarche

Je suis parti sur la base de l’affichage du moteur de recherche de Spip-Contrib (merci les admin ;)). Le code étant clairement commenté, je n’avais plus qu’à l’adapter à la situation.

Beaucoup me diront que j’ai copié du code sans grande idée, je le reconnais mais je souhaitais cette fonctionnalité pour offrir à mes visiteurs non pas une liste d’articles importante mais plutôt une aisance de lecture.

-  Nom du Squelette : Pagination Bis
-  Auteur : Fabrice WANG
-  Licence : GPL
-  Compatibilite SPIP : compatible SPIP > 1.6

-  Principales fonctionalités et spécificités :
Pagination que l’on peut adapter soit même

-  Testé sur ces navigateurs

TestéPlateformeNavigateurVersion
oui windows Internet explorer 6
oui windows Netscape 4.75 (en)et 7.1 (en)
non windows Mozilla .
non windows Phoenix .
oui windows Opera 7.23
oui Mac Internet explorer 5.1
oui Mac Netscape 4.5
non Mac Chimera .
non Mac Mozilla .
non Mac Phoenix .
non Mac Opera .
non Unix/Linux Netscape .
non Unix/Linux Mozilla .
oui Unix/Linux FireBird 0.6
non Unix/Linux Opera .

Le code

       <?php
       $NbResults = 0; // initialisation du comptage
       ?>
       <BOUCLE_Articles(ARTICLES){id_rubrique}>
       <?
       $NbResults++; // bête incrémentation (basique mais efficace)
       ?>
       </BOUCLE_Articles>
       <?php
       if (!isset($HTTP_GET_VARS["debut_lb"])) $debut_lb = 0; //c'est le paramètre à passer en GET dans l'URL
       $Page = floor($debut_lb/5) + 1;  // numéro de page dans laquelle on est
       $MaxPage = floor($NbResults/5) + 1; // dernière page
       $Last = ($debut_lb+6<$NbResults) ? $debut_lb+5 : $NbResults; // dernier résultat affiché (permet d'écrire:"résultats X à Y affichés sur un total de Z" -> voir plus bas)
       if ($NbResults > 0)
       {
       // echo $NbResults ." articles trouvés au total pour \"#TITRE\", résultats " .($debut_lb+1). "- $Last "; //On affiche le nombre total d'articles dans la rubrique et combien sont affichés
       }
       else
       {
       // echo " Aucun article trouv&eacute; pour #TITRE " ; //Sinon on annonce qu'il n'y a pas d'articles dans cette rubrique
       }
       ?>
       <BOUCLE_articles_recents(ARTICLES) {id_rubrique} {debut_lb,5} {par date} {inverse}>
       <span>#TITRE&nbsp;-&nbsp;</span><span>[(#DATE|nom_mois)] [(#DATE|annee)]</span><br>
       <span>[(#CHAPO|justifier)]</span>
       <div align="right"><a href="#URL_ARTICLE">Lire la suite</a></div><br>
       <br>
       </BOUCLE_articles_recents>
       <?php
       if ($NbResults > 5) //Si on a plus de 5 articles où 5 est la variable à modifier dans les différentes boucles
       {
       ?>
       <table border="0" cellpadding="0" cellspacing="0">
        <tr>
         <td> Page(s) : 
         <?php
         if ($MaxPage>1)
         {
         for ($i=0;$i<$MaxPage;$i++)
         	{
         	if ($i+1==$Page)
         		{
         		?>
         		<? echo $i+1; ?>&nbsp;|
         		<?php
         		}
         		else
         			{
         			if ($i+1<$Page)
         				{
         		?>
         		<a href='rubrique.php3?id_rubrique=<?php echo urlencode($id_rubrique);
         		if ($i) {echo "&debut_lb="; echo 5*$i;} ?>'><?php echo $i+1; ?></a>&nbsp;|
         		<?php
         				}
         		else
         				{
         		?>
         		<a href='rubrique.php3?id_rubrique=<? echo urlencode($id_rubrique);
         		?>
         		&debut_lb=<? echo 5*$i; ?>'><? echo $i+1; ?></a>&nbsp;|
         		<?php
         				}
         			}
         	}
         }
         ?>
         </td>
        </tr>
       </table>
       <?php
       }
       ?>

Commentaires

Pour les plus profanes d’entre nous et j’en fais parti, 2 variables sont à modifier : les chiffres 6 et 5.
6 est le nombre au-delà duquel la pagination se crée puisque je n’affiche que 5 articles par page.

Vous allez constater que l’url que l’on récupère ensuite génère des espaces mais que cela ne perturbe pas la navigation. En effet, je pense que les espaces insécables que j’ai intégrés en plus des « | » créent cela.

Donnez-moi votre avis (par mail ou via le forum de cet article) et aidez-moi à optimiser ce squelette pour toute plateforme.

test

Discussion

6 discussions

  • Ca fonctionne sans problème. Le seul problème que je vois, c’est la | qui est à la fin de la ligne contenant le nombre de pages. C’est pas super joli... mais sinon, ché chuper :)

    Répondre à ce message

  • Bonjour
    Rien à dire, si ce n’est que tout fonctionne nickel !
    Merci bien pour le boulot !

    Répondre à ce message

  • 1

    RAS, ca tourne nickel.

    Testé et approuvé sous Mozilla Firefox 0.93 fr

    Merci.

    Répondre à ce message

  • 1
    ParMesSoins

    Je me permet juste un ptit commentaire :
    -  <?PHP est mieux que <?
    -  pour ceux qui ne pane rien à PHP, enlever les //pour afficher les lignes (// sert à passer une ligne en commentaire, donc de na pas en tenir compte dans le code.

    Sinon, merci pour le boulot ;0)

    • Fabrice WANG

      Les « // » sont certes des commentaires mais cela permet de laisser une trace dans des modifications ou indiquer ce qui est à modifier.

      Je sais que ce n’est pas pertinent pour les initiés mais cela évite à des profanes de chercher le bon paramètre à modifier.

      @+

    Répondre à ce message

  • 1
    robomatix

    J’ai voulu tester avec firefox sur xp, mais le lien semble mort...

    • Fabrice WANG

      Désolé, j’ai refait mon serveur et j’ai oublié de le remettre.

      Le test peut se dérouler maintenant

    Répondre à ce message

  • 1
    Jacques

    Etant grand débutant, que faut il faire de ce code : le mettre dans un squelette tel que ?

    • Fabrice WANG

      La réponse est « Oui ». Il suffit de copier/coller le code dans le squelette des rubriques là où doivent s’afficher la liste des articles d’une rubrique.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom