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.
Aucune discussion
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 : |