Objectif
Présenter toutes les brèves d’un site sur une même page en ne mettant que les brèves d’une même année sur la page.
Sous-objectifs
- Par défaut, présenter les brèves de l’année en cours ;
- Permettre la navigation d’une année à l’autre ;
- Ne pas avoir à modifier le squelette à chaque début d’année ;
- Récupérer les anciennes brèves (quand le site était en HTML statique avant que le webmestre ne découvre ce merveilleux outil qu’est SPIP).
Principe
On créé un fichier de squelette spécifique qu’on appelle news.php3 (on créé aussi son homologue news.html).
Pour déterminer l’année à afficher, on se base sur une variable transmise par l’URL qu’on appelle var_nav_year(le « var_ » est là pour optimiser le cache de SPIP)
L’appel de la page « news » doit se faire de la forme
news.php3 ?var_nav_year=AAAA où AAAA est l’année désirée.
Haut dans le squelette, on vérifie au préalable que var_nav_year est positionnée. Si non, on la force sur l’année en cours.
On en profite pour ramener systématiquement toute année demandée antérieure à la première année dispo sur cette première année (ici 2000. Si l’URL a 1998 dans var_nav_year, on remet 2000).
De même, si on demande une année postérieure à l’année en cours, on ramène var_nav_year à l’année en cours.
On conserve l’année à retenir dans une variable PHP $id_annee
Une fois que id_annee est renseignée, on va afficher les news correspondant à cette année.
L’utilisation des variables étant difficile au sein des boucles SPIP, on construit une boucle BREVES qui affiche toutes les news du site.
A l’intérieur de cette boucle, on introduit un bout de PHP qui fait la sélection des brèves en comparant l’année de la brève avec id_annee.
En dehors de la boucle, si on est sur la plus ancienne année, on fait un include de la « vieille » page statique des news :
( Normalement, la boucle n’a rien ramené !)
Reste le problème de la navigation.
Pour interroger les brèves d’une année antérieure, on vérifie qu’on est pas
sur la dernière année dispo :
Pour interroger les brèves d’une année postérieure, on vérifie qu’on est pas sur l’année courante :
Pour la présentation, on peut écrire en haut de page :
Un exemple ?
Un exemple ici http://www.dreamnev.org/fr/news.php3
(désolé, je suis nul en présentation)
Limites du projet
- Que se passe-t-il si le 1er janvier d’une nouvelle année, il n’y a pas encore de news pour cette année ?
- D’une manière générale, l’absence de news pour une année donnée n’est pas gérée.
Contact
Je suis à votre disposition : Raphaël BESSON
Avril 2003
Bon courage !



Vos commentaires
# Le 29 mai 2003 à 14:30, par silicium
En réponse à : > Toutes les news d’une année sur une page
une erreur s’est glissée dans le code !
Dans le paragraphe Pour interroger les brèves d’une année postérieure, on vérifie qu’on est pas sur l’année courante :
Il faut enlever la parenthèse fermante de :
echo "<a href='news.php3?var_nav_year=".($id_annee + 1)."'>");en
echo "<a href='news.php3?var_nav_year=".($id_annee + 1)."'>";Je déconseille de coder en dur le nom du script. si on le change il faut retourner dans le script modifier le code à la main. A la place, utilisez $PHP_SELF
Exemple :
echo "<a href=\"$PHP_SELF?var_nav_year=" . ($id_annee - 1)."\">";# Le 31 mai 2003 à 22:31, par Raphael BESSON
En réponse à : > Toutes les news d’une année sur une page
Deux remarques judicieuses non bloquantes mais à prendre en compte.
Merci Silicium
# Le 12 septembre 2003 à 06:39, par DoriaN
En réponse à : > Toutes les news d’une année sur une page
la « ) » c’est corrigé, pour le nom du script vous ferez la manip tout seuls les amis ;-)
Répondre à ce message
# Le 29 mai 2003 à 22:52, par Groelk
En réponse à : > Toutes les news d’une année sur une page
Et comment faire pour afficher sur une même page brèves ET articles classés ENSEMBLE par année de publication ?
# Le 31 mai 2003 à 22:24, par Raphael BESSON
En réponse à : > Toutes les news d’une année sur une page
Salut,
Pour avoir les news et les articles, il suffit de faire deux boucles sur le même principe l’une en dessous de l’autre : la première sur les brèves, la seconde sur les articles.
A+
Répondre à ce message