[SPIP 1.6] introduit une série de critères et de balises pour mieux gérer les dates des articles. En voici une liste.
Afficher les dates
#DATE est la date de mise en ligne. (Modifiable après la mise en ligne de l’article, de la brève, etc. La date d’une rubrique est celle de son élément le plus récent.)
#DATE_REDAC est la date de première publication. (Modifiable à volonté, disponible sur les articles seulement.)
#DATE_MODIF [SPIP 1.5]
est la date de dernière édition de l’article : précisément, il s’agit de la dernière date à laquelle cet article a été ouvert en édition qu’il ait été modifié ou pas. Pratique dans de nombreux cas, mais pas d’une rigueur scientifique... (Non modifiable, sauf si on veut la fixer à « maintenant » : il suffit alors... d’ouvrir l’article en édition.)
#DATE_NOUVEAUTES [SPIP 1.6] permet d’afficher la date du dernier envoi du mail présentant les nouveautés.
Les filtres |annee
, |mois
, |jour
, |heure
, |minutes
, |secondes
, mais aussi |affdate
, |nom_mois
, |nom_jour
, |saison
, etc. s’appliquent pour permettre tous les affichages habituels sous divers formats. (Sans ces filtres, les balises #DATE...
s’affichent en effet au format MySQL : "2001-12-01
03:25:02"
.)
Contexte de date
[SPIP 1.6] fournit à toutes les boucles un contexte de date. Si l’on se trouve à l’intérieur d’une boucle (ARTICLES)
, (BREVES)
ou (RUBRIQUES)
, la date en question est la date de publication de l’article, de la brève ou la date de dernière modification de la rubrique.
Si l’on se trouve au premier niveau du squelette, la date passée dans le contexte est la date du jour, sauf si une date est passée dans l’URL de la page.
Dans ce dernier cas, et pour les versions de php supérieures à 3.0.12, la date passée dans l’URL est analysée avec la fonction strtotime
: ainsi ?date=2003
, ?date=2003/01
fonctionneront, mais aussi date=-1year
(il y a un an), ?date=1march1970
(articles publiés le 1er mars 1970), etc.
Critère de date, d’âge, et d’âge relatif
Le critère {age}
permet de sélectionner les articles en fonction de la durée qui sépare leur date de publication en ligne avec la date courante. Ainsi {age<30}
permettra de ne pas afficher les articles âgés de plus de 30 jours.
L’{age_relatif}
permet de comparer les dates de publication de deux articles : si l’on vient de sélectionner un article dans un boucle, une seconde boucle placée à l’intérieur de la première pourra demander les articles publiés dans la semaine qui précède celui-ci, via {age_relatif<=7}{age_relatif>=0}
, etc.
Les critères {age}
et {age_relatif}
permettent de distinguer deux articles publiés le même jour (ce n’était pas le cas avant [SPIP 1.6]). On peut donc désormais programmer des boucles pour obtenir l’article « précédent » ou le « suivant » :
Attention ! Malgré les apparences les comparaisons de date sont d’un maniement délicat : en effet, à cause des « dates floues » (un article publié un mois donné, sans que le jour soit précisé), le calcul de l’age_relatif peut donner la valeur zéro dans un sens, et pas dans l’autre ! D’où la dissymétrie des boucles présentées ci-dessus : dans un sens on cherche le « second plus récent » des articles {age_relatif>=0}
(car le plus récent, avec la comparaison non-stricte, ne peut être que l’article lui-même) ; dans l’autre le plus âgé des articles publiés strictement plus tard.
Les critères {jour_relatif}
, {mois_relatif}
et {annee_relatif}
fonctionnent comme l’age_relatif, mais prennent en compte des dates arrondies au jour, au mois et à l’année respectivement ; par exemple, si l’URL comporte la variable ?date=2003-01-01
, la boucle suivante donnera « tous les les articles du mois de mars 2003 »
La date de rédaction antérieure
Si vous avez activé l’utilisation des dates de publication antérieure, la plupart des critères présentés ci-dessus fonctionnent : il suffit d’ajouter _redac
au critère. Ainsi {age_redac>365}
affichera les articles dont la date de publication antérieure remonte à plus d’un an.
Si une boucle sélectionne un article dont l’age_redac est défini, une boucle interne comportant le critère {annee_relatif_redac=0}
ira chercher les articles dont la date de publication antérieure appartient à la même année.
Un exemple de sommaire de site trié par date
A titre d’exemple, voici comment on peut afficher tous les articles d’un site, triés par mois de publication :