SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

79 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Agendas et Dates > Tris par date > Toutes les brèves d’une année sur une page
[5 commentaires]

Toutes les brèves d’une année sur une page

dimanche 25 mai 2003, par rabe

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati

Présenter toutes les brèves d’une même année sur une page, c’est possible avec une seule boucle dans Spip 1.6 . Néanmoins si vous êtes dans une version antérieure (et que vous voulez y rester), c’est aussi possible avec un peu de PHP.

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 !

P.-S.

Note des admin : Si vous êtes à jour dans les versions de SPIP, il est possible a partir de la version 1.6 faire cela en SPIP pur à l’intérieur d’un squelette.

Voici la boucle : <BOUCLE_principale(BREVES){par date}{annee_relatif=0}>

Et il suffit que cette boucle possède la date dans le contexte ou dans l’url ( ... par exemple nomDuFichier.php3 ?date=2003 )

Voir la documentation sur la gestion des dates

Retour en haut de la page

5 Messages de forum

Voir toute la discussion

  • Répondre à ce message

    12 septembre 2003 06:39 , par DoriaN

    la ")" c’est corrigé, pour le nom du script vous ferez la manip tout seuls les amis ;-)

  • Répondre à ce message

    31 mai 2003 22:31 , par Raphael BESSON

    Deux remarques judicieuses non bloquantes mais à prendre en compte.
    Merci Silicium

  • Répondre à ce message

    31 mai 2003 22:24 , par Raphael BESSON

    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

    29 mai 2003 22:52 , par Groelk

    Et comment faire pour afficher sur une même page brèves ET articles classés ENSEMBLE par année de publication ?

  • Répondre à ce message

    29 mai 2003 14:30 , par silicium

    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)."\">";

Répondre à cet article

Retour en haut de la page

Ça discute par ici

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