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é | Plateforme | Navigateur | Version |
---|---|---|---|
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é 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 - </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; ?> |
<?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> |
<?php
}
else
{
?>
<a href='rubrique.php3?id_rubrique=<? echo urlencode($id_rubrique);
?>
&debut_lb=<? echo 5*$i; ?>'><? echo $i+1; ?></a> |
<?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.
Discussions par date d’activité
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
RAS, ca tourne nickel.
Testé et approuvé sous Mozilla Firefox 0.93 fr
Merci.
J’ai oublié de préciser l’OS > Windows
Répondre à ce message
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)
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
J’ai voulu tester avec firefox sur xp, mais le lien semble mort...
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
Etant grand débutant, que faut il faire de ce code : le mettre dans un squelette tel que ?
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 :
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.
Suivre les commentaires : |