SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

274 Plugins, 192 contribs sur SPIP-Zone, 87 visiteurs en ce moment

Accueil > Documentation > Archives documentation > Bidouilles pour avant SPIP 1.9 > Afficher un nombre déterminé de liens articles par page, dans une (...)

Afficher un nombre déterminé de liens articles par page, dans une rubrique

16 mai 2003 – par Robert Sebille

1 vote

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

Si, dans le squelette « rubrique.html », on a mis une boucle « articles » avec le paramètre {tout}, les pages rubriques vont grandir exagérément au fur et à mesure du remplissage du site. Si on a limité le nombre d’articles (avec le paramètre {0, 20}, par exemple), on « perd » les plus anciens.

L’avantage de la boucle ci-dessous, est qu’on n’est plus obligé de limiter le nombre de liens vers les articles dans une page rubrique, tout en évitant de voir grandir cette page à l’infini.

Le code de la boucle entre les 2 lignes :


<!-- Compte et affiche le nombre total d'articles de la rubrique -->
        <B_compte_articles>
                <BOUCLE_compte_articles(ARTICLES){id_rubrique}>
                        <?php $total=#TOTAL_BOUCLE; ?>
                </BOUCLE_compte_articles>
                Nombre total d'articles: #TOTAL_BOUCLE
        </B_compte_articles>

<!-- Initialisation du compteur et du nombre d'articles par page (php) -->
<?php
//Nombre d'articles par page: Ici, 15 article par page. Vous pouvez bien sur mettre un autre nombre que 15..
//Attention, il doit être égal au nombre du critère {debut_article,15}
$nb_art_par_page=15;
if (isset($debut_article)) {$compteur=$debut_article;} else {$compteur=0;}
?>

<B_articles>
        <b>Articles:</b>
        <ul>
<!-- Attention: Le nombre 15 dans {debut_article,15} doit être égal à $nb_art_par_page=15; ci-dessus -->
        <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{debut_article,15}>
                [<li><A HREF="#URL_ARTICLE">(#TITRE)</a>]

<!-- Incrémentation du compteur (php) -->
<?php if ($compteur<0) {$compteur=0;} else {$compteur+=1;} ?>

        </BOUCLE_articles>
        </ul>

<!-- Lien vers page pécédente et suivante (php) -->
<?php
$offset_art_prec=$compteur-(#TOTAL_BOUCLE+$nb_art_par_page);
if ($offset_art_prec >= 0)
        {echo "<a href='rubrique.php3?id_rubrique=#ID_RUBRIQUE&debut_article=$offset_art_prec'>Les ".$nb_art_par_page." articles précédents...</a><br>";}
if ($compteur < $total)
        {if (($compteur+$nb_art_par_page) > $total) {$nb_art_suiv = $total - $compteur;} else {$nb_art_suiv = $nb_art_par_page;}
        echo "<a href='rubrique.php3?id_rubrique=#ID_RUBRIQUE&debut_article=$compteur'>Les ".$nb_art_suiv." articles suivants...</a>";}
?>

</B_articles>
        <br>Il n'y a pas d'articles dans cette rubrique.
<//B_articles>

Alternative images ou remplacer par une flèche les liens « Les X articles suivants/précédents ».

Dans la boucle ci-dessus, remplacer la section par celle ci-dessous :


<!-- Lien vers page pécédente et suivante (php) -->
<?php
//Attention, utiliser des quotes (') et non des guillemets (") dans les balise <img src=...
$offset_art_prec=$compteur-(#TOTAL_BOUCLE+$nb_art_par_page);
if ($offset_art_prec >= 0)
        {echo "<a href='rubrique.php3?id_rubrique=#ID_RUBRIQUE&debut_article=$offset_art_prec'><img src='ma_fleche_gauche.gif' alt='Articles precedents' border='0'></a><br>";}
if ($compteur < $total)
        {if (($compteur+$nb_art_par_page) > $total) {$nb_art_suiv = $total - $compteur;} else {$nb_art_suiv = $nb_art_par_page;}
        echo "<a href='rubrique.php3?id_rubrique=#ID_RUBRIQUE&debut_article=$compteur'><img src='ma_fleche_droite.gif' alt='Articles suivants' border='0'></a>";}
?>

----

Bien sur, il faut remplacer ma_fleche_gauche/droite.gif par les noms de vos images et les télécharger ;-), mais surtout, il NE FAUT PAS utiliser des guillemets ("), mais des quotes (’) dans la balise img.

<img src='ma_fleche_droite.gif' alt='Articles suivants' border='0'> marchera, mais <img src="ma_fleche_droite.gif" alt="Articles suivants" border="0"> se plantera !

Enfin, voici un exemple d’utilisation sur un site test avec 2 articles par page seulement, pour les besoins de l’exemple, mais vous mettez autant d’articles que vous voulez.

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le Couteau Suisse

    4 mai 2007 – 1349 commentaires

    Ce plugin propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP et qui s’avèrent rapidement indispensables ! Par exemple : le contrôle de nombreuses variables « cachées » de SPIP, des améliorations ou facilités typographiques, (...)

  • FullCalendar

    7 avril 2011 – 78 commentaires

    Créez des calendriers jQuery à partir de vos articles, d’un agenda Google ou de la base de donnée SPIP.

  • Plugin SEO

    6 août 2009 – 96 commentaires

    SEO est un plugin qui ajoute la possibilité d’insérer manuellement où vous le souhaitez ou de manière automatique dans la partie de votre site web : meta tags, URL canonique, Google webmaster tools Meta Code et Google Analytics javascript. Il est (...)

  • SpipService

    11 mai – 12 commentaires

    SpipService est un outil permettant d’actualiser un site Spip depuis n’importe quel environnement. Ce plugin permet à un service tiers de gérer le contenu du système via des services web (WebService). « SpipService est une interface entre vous et le (...)

  • Formulaire d’ajout/modification d’articles côté public à partir de SPIP2.1

    2 janvier – 12 commentaires

    A partir de SPIP 2.1, et plus encore en SPIP3, plus besoin de plugin ou procédure compliquée pour l’édition côté public de vos articles. Une illustration de possibilités, adaptable pour tous les objets SPIP. La base Elle est dans la documentation de (...)