Boomtchak

Pagination Spip avec "Xpagination"

vendredi 20 juin 2003, par atur

Le problème :

- Vous avez une rubrique qui contient 100 articles.
- Recherche d’articles

Vous voulez afficher les titres d’articles par 10 avec des liens sur les autres titres d’articles groupés par 10. Exemple :

1 10 20 30 40 50 60 70 80 90 100

ou

G o o o o o o o o o gle

On appel ça de la "pagination".

Il y a plusieurs solutions. Voici une qui je pense est facile à intégrer.

La solution :

Vous avez besoin d’un paquet de scripts php que vous pouvez télécharger ici : Xpagination.tar.gz

Décompressez ce paquet dans le répertoire principal de SPIP.

Ensuite éditez le squelette dans lequel vous voulez afficher la pagination. Il suffit d’introduire 2 scripts php. La place ou vous introduisez les 2 scripts n’est pas fixe. Mais il faut que le SCRIPT 1 soit toujours avant le SCRIPT 2. Le SCRIPT 1 fait une sorte d’initialisation et le SCRIPT 2 affiche les liens de pagination.

Voici un exemple du style Google. Collez le SCRIPT 1 dans votre squelette.

<?php
// SCRIPT 1
//
include_once("Xpagination/Xpagination.php");
$xpage = & new xPagination();

// Modifiable selon vos besoins
//
$xpage->item = 'articles';
$xpage->debut_xxx = 'debut_art';
$xpage->limit = 10;
$xpage->ex_rubrique = '';
$xpage->ex_article = '';
$xpage->ex_secteur = '';
$xpage->ex_breve = '';
$xpage->counter = 'o';
$xpage->this_counter = '<b>o</b>';
$xpage->start_string = '<div class="pagination">G ';
$xpage->end_string = ' gle</div>';
$xpage->enclose1 = '';
$xpage->enclose2 = '';
$xpage->sepa = ' ';
$xpage->query = '';

// Construction des liens de pagination
//
$xpage->make_links();
?>

Explication :

- include_once("Xpagination/Xpagination.php") ;

Le script de base que vous avez décompressé avant dans le répertoire SPIP. OBLIGATOIRE

- $xpage = & new xPagination() ;

Initialisation de la class php de pagination. OBLIGATOIRE

- $xpage->item = ’articles’ ;

Le gendre des documents. Actuellement ça devrait marcher avec : ’articles’, ’breves’. Mais c’est seulement testé avec ’articles’. Ca marche aussi pour la recherche ! OBLIGATOIRE

- $xpage->debut_xxx = ’debut_art’ ;

Le nom de la variable qui définit le début de l’affichage des articles. Il est important que ce nom soit le même que celui dans la tête de boucle d’article : debut_art,10 OBLIGATOIRE

- $xpage->limit = 10 ;

Le nombre de titres d’article à afficher à la fois. Il est important que ce chiffre soit le même que celui dans la tête de boucle d’article : debut_art,10 OBLIGATOIRE

- $xpage->ex_rubrique = ’5,8,13’ ;

$xpage->ex_article = ’35,59,89’ ;

$xpage->ex_secteur = ’6,15’ ;

$xpage->ex_breve = ’5,8,13’ ;

Exclure des documents du résultat de certaines rubriques,articles,secteurs ou breves. Les ID’s sont séparé par des virgules. Cela donne uniquement un sens si vous faites de même dans la boucle.

- $xpage->counter = ’’ ;

Définition du gendre du compteur de pagination. Si vous le laissez vide la pagination utilise un compteur de numéro automatique. Autrement vous pouvez introduire n’importe quel caractères ou une définition en html (ex.:image).

Exemple avec numéro :

[1] - [10] - [20]

Exemple avec caractère :

G o o o o o o o gle

- $xpage->this_counter = ’’ ;

Si vous utilisez un compteur de caractère vous pouvez définir ici le caractère de la page actuelle.

- $xpage->start_string = ’G ’ ;

$xpage->end_string = ’ gle’ ;

Définition de ce qui se trouve avant et après la pagination. De préférence le formatage html de la pagination

- $xpage->enclose1 = ’’ ;

$xpage->enclose2 = ’’ ;

La définition des caractères de gauche et droite qui entourent le caractère de la page actuelle.

- $xpage->sepa = ’ ’ ;

Signe de séparation entre les numéros ou caractères des pages

- $xpage->query = ’’ ;

Elements à ajouter à l’url selon les besoins

- $xpage->make_links() ;

Construction des liens de paginations OBLIGATOIRE

Ensuite vous devez modifier la tête de la boucle d’articles. Ce qui est important c’est la commande debut_art,10. Cela signifie que vous voulez afficher les articles par 10, débutant avec le contenu de la variable "debut_art". Le nom de cette variable doit commencer par "debut_". Le reste du nom vous pouvez le nommer comme vous voulez. Le contenu de cette variable est géré automatiquement.

<BOUCLE_art(ARTICLES) {id_rubrique} {par date} {inverse} {debut_art,10} >

<a href="#URL_ARTICLE">#TITRE</a><br>

</BOUCLE_art>

Le script suivant affiche les liens vers les autres titres d’articles. Vous pouvez l’introduire avant ou après la boucle d’article. Mais toujours après le premier script php.

<?php
// SCRIPT 2
//
echo $xpage->links;
?>

P.-S.

© 2003 Armand Turpel xprotector@open-publisher.net.

Web : Xpagination.

Distribution sous licence GPL

11 Messages de forum

  • > Pagination Spip avec "Xpagination" 2 juillet 2003 09:32, par jm

    merci pour cette nouvelle fonction !
    existe-t-il également le moyen de "paginer" les messages d’un forum attaché à un article ?? (j’ai des articles qui possèdent un forum avec plus de 70 messages, et la page devient bien trop longue...)
    merci !

  • > Erreurs MySQL 9 juillet 2003 11:29, par George

    Bonjour

    J’ai teste le code sur les forums mais je recois une serie de warnings :
    "Warning : Call-time pass-by-reference has been deprecated - argument passed by value ; If you would like to pass it by reference, modify the declaration of mysql_fetch_array(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in D :\Program Files\Apache Group\Apache2\htdocs\falasteen\Xpagination\mysql.php on line 198"

    Il y en a 5 comme ca. Je suis sur Apache 2, MySQL 4.0.13 et PHP 4.3.2.

    Ah oui, et le compteur n’apparait pas. Des suggestions ?

    Merci

    George

  • Call-time pass-by-reference 9 juillet 2003 11:53, par Armand

    Il faut que la variable "allow_call_time_pass_reference" est sur "On" dans le fichier php.ini .

    Il n’est pas recommandé à utiliser php avec apache 2 parce-que ce n’est pas encore stable.

    Pour des réponses plus vites veuillez me contacter directement sous :
    xprotector@open-publisher.net

  • Super script !! j’aurais juste une petite question : peut-on, au lieu d’afficher [1] [10] [20]..., afficher page : 1 - 2 - 3... ?? c’est plus "parlant", je trouve
    merci !

  • > Pagination Spip avec "Xpagination" 29 septembre 2003 15:29, par dany

    Bonjour,

    X pagination fonctionne t-il aussi avec un critère id_mot au lieu du critère id_rubrique dans la boucle (ARTICLE)

    Merci

  • > personnalisation 11 octobre 2003 14:17, par deca

    Bonjour,

    Vraiment génial mais je cherche à mettre des images indicées à la place de numéros.

    ------ ------ ------ ------ ------
    01 (10) 20 30 40
    ------ ------ ------ ------ ------

    page00.png page10.png page20.png etc...

    avez-vous une idée ?

    Merci d’avance.

  • Pagination Spip avec "Xpagination" 17 mars 2006 15:47, par Louis

    Bonjour,

    Ceci m’a l’air d’une super contribution à SPIP et j’aimerai bien l’utiliser. malheureusement le lien vers les fichiers à décompresser à la racine est brisé...

    http://xprotector.sourceforge.net/X...

    Peut on faire quelque chose ?

    Merci...

  • Pagination Spip avec "Xpagination" 16 septembre 2006 18:12, par Bilou Bilou

    Bonjour,
    pourriez-vous m’envoyer le fichier compressé ?
    Nous n’y avons plus accès.

    Merci. :-)

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0