Il faut tout d’abord avoir en tête que Dotclear stocke trois dates pour chaque billet :
- la date réelle de création (le premier enregistrement du billet) dans le champ post_creadt,
- la date de publication (commandée par le champ « Publié le » dans l’édition de billets) dans le champ post_dt,
- la date de réenregistrement, quand on opère des modifications, dans le champ post_upddt.
La méthode ci-dessous utilise les champs post_creadt et post_upddt et ne tient donc pas compte de la date de publication.
Pour afficher la date et l'heure de mise à jour d'un billet, coller le code suivant dans le fichier _public.php du thème actif :
<?php
$core->tpl->addValue('UpdateTime', array('tplMyThemeAdditions', 'UpdateTime'));
class tplMyThemeAdditions {
public static function UpdateTime($attr)
{
$format = $GLOBALS['core']->blog->settings->date_format;
if (!empty($attr['format'])) {
$format = addslashes($attr['format']);
}
$f = $GLOBALS['core']->tpl->getFilters($attr);
$p = '<?php if ($_ctx->posts->post_upddt > $_ctx->posts->post_creadt) {'.
'echo "<li>Modifié le : "; '.
'echo '.sprintf($f,"dt::dt2str('".$format."',\$_ctx->posts->post_upddt)").'; ';
$format = '';
$format = $GLOBALS['core']->blog->settings->time_format;
if (!empty($attr['format'])) {
$format = addslashes($attr['format']);
}
$p .= 'echo " à "; '.
'echo '.sprintf($f,"dt::dt2str('".$format."',\$_ctx->posts->post_upddt)").'; '.
'echo "</li>"; } ?>';
return $p;
}
}
?>
Appeler ensuite cette fonction en collant la ligne suivante à l'endroit voulu :
{{tpl:UpdateTime}}

Commentaires
Il y a un décalage d'une heure dans les heures de modifications, comme sur le post de mon site. Une idée pour corriger ?