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

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

Affiche X liens vers des articles, par page, dans une rubrique et place les liens adéquats (X articles suivants, X articles précédents). Utilise du PHP dans la boucle.

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.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom