il te faut dans un premier temps activer l’option :
configuration -> contenu du site -> Contenu des articles -> Date de rédaction antérieure : Oui
désormais pour chaque article tu vas disposer de 2 dates :
– la date de publication en ligne (généralement la date à laquelle l’article obtient le statut publié)
dans une boucle article d’un squelette c’est #DATE
– et la date de rédaction antérieure qui, contrairement à son intitulé, peut être dans le futur !
dans une boucle article d’un squelette c’est #DATE_REDAC
on va donc considérer que c’est cette date de rédaction antérieure qui sera la date butée de l’évènement :
par exemple un article du 25 mars 2008 (date de publication en ligne) aura comme date butée le 12 avril 2008 (date de rédaction antérieure)
ensuite, pour calculer l’écart entre ces deux dates, je te propose de créer une fonction spécifique que tu utiliseras comme un filtre.
cette fonction est à placer dans le fichier mes_fonctions.php
(si ce fichier n’existe pas, il te faut le créer avec un simple éditeur de texte, l’enregistrer au format texte seul, et le placer dans ton répertoire squelettes/)
<?php
// utilisée comme filtre : #DATE|decompte
// cette fonction retourne le nombre de jours,
// s'il est égal à zéro ou positif, entre la date courante
// et la date #DATE passée en argument.
// si l'écart est négatif (#DATE est passée)
// la fonction ne retourne rien
function decompte($dat_x) {
$ce_jour = date('d');
$ce_mois = date('m');
$ce_an = date('Y');
$jour_x = substr($dat_x, 8, 2);
$mois_x = substr($dat_x, 6, 2);
$an_x = substr($dat_x, 0, 4);
$reste_jours = round((mktime(0,0,0,$mois_x,$jour_x,$an_x)-mktime(0,0,0,$ce_mois,$ce_jour,$ce_an))/86400);
return $reste_jours >= 0 ? $reste_jours : '';
}
?>
cette fonction-filtre calcule à chaque appel le nombre de jours qu’il reste entre la date du jour (de consultation de l’article) et notre fameuse date butée.
dans un squelette, elle peut s’utiliser sous la forme :
<BOUCLE_art(ARTICLES)>
[(#DATE_REDAC|decompte|=={0}|?{' '}) c'est aujourd'hui !]
[(#DATE_REDAC|decompte|>{0}|?{' '}) encore [(#DATE_REDAC|decompte)] jour[(#DATE_REDAC|decompte|>{1}|?{'s',''})] ...]
</BOUCLE_art(ARTICLES)>
pour que le résultat affiché se mette à jour à chaque consultation, il te faudra mettre le #CACHE{}
de la page à une durée inférieure à 24 heures ou bien utiliser un <inclure>
dont le cache sera réglé à zéro (#CACHE{0}
).