Pagination Bis

All contributions published for previous SPIP versions

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

updated on 5 December 2006

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 :)

    Reply to this message

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

    Reply to this message

  • 1

    RAS, ca tourne nickel.

    Testé et approuvé sous Mozilla Firefox 0.93 fr

    Merci.

    Reply to this 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.

      @+

    Reply to this 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

    Reply to this 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.

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom